2016-12-03 2 views
0

Я пытался описать python получить, чтобы узнать, вызвано ли это.Дескриптор Python «__get__» не был вызван, как я ожидал, причина?

Я получил следующее:

"""This is the help document""" 
class c1(object): 
    """This is my __doc__""" 
    def __get__(s,inst,owner): 
     print "__get__" 

    def __init__(s): 
     print "__init__" 
     s.name='abc' 

class d(object): 
    def __init__(s): 
    s.c=c1() 

d1=d() 
d1.c 
print d1.c.name 

Я ожидаю, что он будет вызывать получить функцию. Но это факт, что выход

__init__ 
abc 

Почему мой «получить» функция не была вызвана владельцем экземпляра «d1»?

Спасибо!

ответ

1

Дескрипторы должны быть привязаны к классу, а не к экземпляру.

class d(object): 
    c = c1() 
Смежные вопросы