2016-04-09 31 views
1

Python'un dekoratörlerinin benim için çalışmasını sağlamaya çalışıyorum. Bunu çalıştırdığınızdaPython sınıfı özellik dekoratörü çalışmıyor

class toy(object): 

    @property 
    def toyname(self): 
     return 'lol' 

a = toy 
print(a.toyname) 

, aşağıdaki çıktıyı almak: sorun bu neden çalışmıyor anlama yaşıyorum

<property object at 0x03362FC0> 

mülkiyet, öyle görünüyor ki, değerlendirilmektedir değildir.

Python 2.x için, özelliklerin çalışması için object alt sınıfına ihtiyacım olduğuna dair pek çok yanıt gördüm; Ancak, şimdiye kadar karşılaştığım cevaplar sorunumu çözmüyor.

+0

bir _class_ özelliği veya bir _instance_ özellik oluşturmak için çalışıyorsunuz: Başka bir deyişle, bu deneyin a = toy() yerine

a = toy ihtiyacı? – Eric

cevap

4

a = toy numaralı satırı bir soruna neden oluyor. a = toy ifadesinin anlamı, "a değişkenini toy sınıfının tanımına işaret etmektir". Gerçekte yapmak istediğiniz, toy türünde bir nesneyi başlatmak ve a'a kaydetmek için a = toy()'dur. Sınıfınızın planı için

+0

Teşekkürler! Bu benim sorunumdu. Bu içine koşmak için çok çirkin bir hata oldu! – user2785724

1

toy. toy(), çalışabileceğiniz sınıfın yeni bir kopyası veya yeni bir kopyasıdır. Bunu "örneklendirmeniz" gerekir, yani a'ya atamak için sınıfın yeni bir örneğini oluşturmanız gerekir.

class toy(object): 
    @property 
    def toyname(self): 
     return 'lol' 

a = toy() 
print(a.toyname)