2010-07-24 12 views
7

Aktualnie pracuję z Pythonem przez chwilę i doszedłem do punktu, w którym pytałem siebie, czy powinienem używać "Właściwości" w Pythonie tak często, jak w C#. W języku C# najczęściej tworzyłem właściwości dla większości moich zajęć.Użycie właściwości w pythonie, jak w przykładzie C#

Wygląda na to, że właściwości nie są tak popularne w Pythonie, czy jestem w błędzie? Jak korzystać z właściwości w Pythonie?

pozdrowienia,

Odpowiedz

10

Właściwości często nie są wymagane, jeśli wszystko co robisz jest ustawiony i zmienne składowe zapytania. Ponieważ Python nie ma koncepcji enkapsulacji, wszystkie zmienne składowe są publiczne i często nie ma potrzeby hermetyzacji dostępu. Jednak właściwości możliwe, w pełni uzasadnione i popularne są:

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

I można polecić to przeczytać, nawet to jest skierowane do progrmamers Java: Python Is Not Java

+0

+1 To jest warte przeczytania. – volting

2

Jeśli dokona publicznego atrybutu w C# potem trzeba zmienić go na własność trzeba także skompilować cały kod, który używa oryginalnej klasy. Jest to złe, więc wprowadź atrybuty publiczne do właściwości od pierwszego dnia "na wszelki wypadek".

Jeśli masz atrybut, który jest używany z innego kodu, a następnie trzeba go zmienić na właściwość, to po prostu go zmienić i nic więcej nie musi się wydarzyć. Używaj zwykłych atrybutów, dopóki nie znajdziesz czegoś, co będzie bardziej skomplikowane.

Powiązane problemy