2010-07-24 4 views
7

Ich arbeite momentan mit Python für eine Weile und kam zu dem Punkt, wo ich mich fragte, ob ich "Eigenschaften" in Python so oft wie in C# verwenden soll. In C# habe ich meistens Eigenschaften für die meisten meiner Klassen erstellt.Verwendung von Eigenschaften in Python wie in Beispiel C#

Es scheint, dass Eigenschaften in Python nicht so beliebt sind, liege ich falsch? Wie verwendet man Eigenschaften in Python?

Grüßen,

Antwort

10

Eigenschaften sind nicht häufig erforderlich, wenn alles, was Sie tun gesetzt und Abfrage Membervariablen. Da Python kein Verkapselungskonzept hat, sind alle Membervariablen öffentlich und es ist häufig nicht notwendig, Zugriffe einzukapseln. Allerdings Eigenschaften sind möglich, völlig legitim und beliebt:

class C(object): 
    def __init__(self): 
     self._x = 0 

    @property 
    def x(self): 
     return self._x 

    @x.setter 
    def x(self, value): 
     if value <= 0: 
      raise ValueError("Value must be positive") 
     self._x = value 

o = C() 
print o.x 
o.x = 5 
print o.x 
o.x = -2 
7

Ich würde Sie diese empfehlen zu lesen, es auch auf Java progrmamers gerichtet ist: Python Is Not Java

+0

+1 Das ist eine lohnende Lektüre. – volting

2

Wenn Sie ein Attribut public in C# machen dann später in eine Eigenschaft ändern müssen Sie auch den gesamten Code neu kompilieren müssen, die die ursprüngliche Klasse verwendet. Das ist schlecht, also machen Sie vom ersten Tag an alle öffentlichen Attribute in Eigenschaften, nur für den Fall.

Wenn Sie ein Attribut haben, das aus anderem Code verwendet wird, müssen Sie es später in eine Eigenschaft ändern, dann ändern Sie es einfach und nichts anderes muss passieren. Verwenden Sie daher gewöhnliche Attribute, bis Sie feststellen, dass Sie etwas komplizierteres benötigen.

Verwandte Themen