2010-12-26 4 views
0

Ausgehend von einem Java-Hintergrund, möchte ich eine Klasse bestimmte Attribute haben und sie im Konstruktor setzen.Instanziieren von Klassen in Python - Festlegen von Attributen

Momentan verwende ich das globale Schlüsselwort zB.

def class A(): 

global attribute1 
global attribute2 

__init__(): 
    attribute1 = 1 
    attribute2 = 2 

Gibt es einen besseren Weg, dies zu tun? Der Grund, den ich stelle, ist, weil ich nicht sicher bin, ob das Setzen aller Attribute "Global" korrekt ist.

EDIT: Auch wenn ich auf die Attribute zugreife, brauche ich self.attribute ... ist das nötig? d. h. in Java brauchst du das nicht immer.

+1

Ja, Sie brauchen immer 'self.attribute'. Es macht deutlich, wo die Variable ist, auf die Sie sich beziehen. –

+2

Da Ihr Beispiel-Code weder gültige Syntax noch irgendwo in der Nähe zu arbeiten ist, würde ich Ihnen empfehlen, ein Python Buch oder Tutorial zu lesen, nachdem Sie alles vergessen, was Sie über Java und die Art, wie die Dinge dort gemacht werden. –

Antwort

4

Der richtige Weg, dies zu tun, ist, die Attribute zum Konstruktor hinzuzufügen und sie auf Ihrer Instanz hinzuzufügen.

>>> class A(object): 
... def __init__(self, attribute1, attribute2): 
...  self.attribute1 = attribute1 
...  self.attribute2 = attribute2 
... 

>>> a = A(1, 2) 
>>> a.attribute1 
1 
>>> a.attribute2 
2 

Was Ihre zweite Frage, ja, müssen Sie self.attribute innerhalb der Instanz darauf verweisen können.

+0

das macht sehr viel Sinn. Aus Neugier, wann würde das globale Schlüsselwort nützlich sein? Wann möchten wir die Attribute ändern? – Karan

+0

Verwenden Sie das globale Schlüsselwort, wenn Sie eine globale Referenz in einer Funktion ändern (zuweisen) müssen. Andernfalls würde ein neuer lokaler erstellt werden. – Keith