2010-04-17 3 views
2

Je fais de la programmation Java et j'ai récemment commencé à apprendre Python via la documentation officielle. Je vois que nous pouvons ajouter dynamiquement des données attributs à un objet d'instance contrairement à Java:Références d'attributs en Python

class House: 
    pass 

my_house = House() 
my_house.number = 40 
my_house.rooms = 8 
my_house.garden = 1 

Ma question est, dans quelles situations cette fonction utilisée? Quels sont les avantages et les inconvénients par rapport à la façon dont il est fait en Java?

Répondre

2

Il peut également être utilisé lors de la création dynamique des classes; voir par exemple ce tutoriel:

http://onlamp.com/pub/a/python/2003/04/17/metaclasses.html?page=1

ou celui-ci sur Mix-ins, une technique de programmation qui utilise cette capacité pour fournir une meilleure encapsulation et de modularité pour objet code orienté:

http://www.linuxjournal.com/article/4540

Le premier didacticiel utilise setattr(classname, "propertyname", value) au lieu de la syntaxe classname.property = value, mais ils sont identiques.

+0

Il y a * tellement * beaucoup de façons de répondre aux besoins du demandeur dans ce fil ... –

+0

Oui; J'avais l'intention d'afficher rapidement une réponse factuelle et de la modifier avec une réponse plus utile. Le tutoriel est meilleur, mais je cherche toujours un exemple pratique clair de la syntaxe exacte dont il parle. – Personman

+0

expérience personnelle dans l'utilisation de ce genre de syntaxe ferait bien aussi. – Jeune

1

Ce n'est pas souvent fait de l'extérieur de la classe, sauf si l'objet est utilisé comme un seau de sortes. Cela a fait énormément de choses à l'intérieur de __init__(), bien sûr, pour fournir des valeurs aux attributs qui seront utilisés ailleurs.

Oh, et speaking of Java...

+1

C'était une vidéo très utile et un peu drôle aussi! – Jeune

Questions connexes