2009-02-27 34 views
9

Python'da, sınıfın üye değişken adıyla aynı ada sahip bir özellik oluşturmak mümkün mü? Örneğin.Sınıf üyesi adıyla aynı ada sahip bir python özelliği oluşturun

Class X: 
    ... 
    self.i = 10 # marker 
    ... 
    property(fget = get_i, fset = set_i) 

Lütfen bunu nasıl yapabileceğimi söyleyin. Öyle yaparsanız, o pozisyonda ifadesi için ben assingm için yığın taşması olsun Çünkü

cevap

21

Python üyesi değişken adı

sayılı aynı adı taşıyan bir özellik oluşturmak mümkün mü özellikleri, üyeleri ve yöntemlerin hepsi aynı ad alanını paylaşır. o pozisyonda

açıklamada Ben yığın taşması Açıkça

olsun. Ben i, i ayarlamak için çalışır i, hangi i ... reklam stackoverflowum için setter çağırır ben deneyen, i için setter çağırır.

class X(object): 
    def get_i(self): 
     return self._i 
    def set_i(self, value): 
     self._i= value 
    i= property(get_i, set_i) 

Not 'için yeni tarzı nesneleri (alt sınıfın 'nesne') kullanmalıdır:

zamanki desen '_' önüne işaret koyun, arka uç değeri üyesi geleneksel olarak halka açık olmayan yapmaktır özellik 'düzgün çalışması için.

+0

+1, Bana bunu söyle :) – Kiv

+1

-1: "ad stackoverflowum" için http://docs.python.org/library/functions.html#property –

+2

+1 dokümanını alıntılamayı unutma :) –

İlgili konular