2009-12-23 34 views
0

這是我的代碼。我不知道爲什麼它不起作用。誰可以調用__get__,__set__和__del__?

class a: 
    def __get__(self): 
     return 'xxx' 
    def aa(self): 
     print 'aaaa' 

b=a() 
print b.get('aa') 

請嘗試在代碼中回答,因爲我的英語不太好。謝謝。

class HideX(object): 
    def __init__(self, x): 
     self.x = x 

    def get_x(self): 
     return self.__x 

    def set_x(self, x): 
     self.__x = x+10 

    x = property(get_x, set_x) 

inst = HideX(20) 
print inst.x 
inst.x = 30 
print inst.x 
+0

應該發生什麼當你運行這個代碼?你期望的輸出是什麼? – sth 2009-12-23 08:58:18

回答

1

要調用obj.get,但在class A沒有get功能,因此錯誤, 或者重命名__get__get,或者如果你碰巧要使用的描述做這樣的事情

class A(object): 
    def __get__(self, obj, klass): 
     print "__get__", obj, klass 
     return 'xxx' 

class X(object): 
    a = A() 

x=X() 
print x.a 
1

我想你應該多讀一些Descriptors,然後再嘗試使用它們。

+0

你最後兩行的區別是什麼? – Boldewyn 2009-12-23 08:43:27

+0

咦?我認爲它是'print a.get('aa')'。我會改變我的回答 – pkit 2009-12-23 08:47:00

+0

它確實在一開始讀了'print a.get('aa')',但是OP修正了它。 – sth 2009-12-23 08:50:43