2013-05-17 2 views
0

Je me demande simplement s'il existe un raccourci pour définir les attributs par défaut. Je généralement pasDéfinition des attributs de classe dans l'appel de classe

class class1(object): 
    def __init__(self, att1='X'): 
     self.att1 = att1 

Y at-il un raccourci dans les lignes de

class class1(object): 
    def __init__(self, self.att1='X'): 

Je suppose que, au moment de l'appel, l'objet n'existe pas, semble donc logique que cette façon ne travailler, mais il y a peut-être une façon moins verbeuse de gérer cela quand il y a beaucoup plus d'attributs à définir. Des idées?

+3

Non, il n'y a pas. –

+0

Je suis confus. Tu ne peux pas faire 'self.att1 = 'X'', ou ai-je manqué le point – TerryA

+0

@Haidro: valeur par défaut. :-) –

Répondre

1

Essayez quelque chose comme:

class class1(object): 
    att1='X' 
    def __init__(self, **kwargs): 
     self.__dict__.update(kwargs) 
+0

Cela ne peut pas être appliqué si vous voulez utiliser (par exemple) '__slots__'. En outre, il permet à l'utilisateur d'ajouter/modifier n'importe quel attribut dans l'instance. – Bakuriu

+0

Merci, c'est vraiment bon à savoir. Dans mon cas, je veux toujours limiter les attributs juste qu'il est plus facile de deubg que sinon, les typos se faufilent rapidement lors de l'appel de l'objet – chrise

Questions connexes