Дескриптор Python "__get__" был вызван не так, как я ожидал, причина?
Я пробовал дескриптор get для Python, чтобы посмотреть, называется ли он.
У меня есть следующее:
"""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
Я ожидаю, что это вызовет функцию get. Но это факт, что выход
__init__
abc
Почему моя функция "get" не была вызвана владельцем экземпляра "d1"?
Спасибо!
1 ответ
Решение
Дескрипторы должны быть связаны с классом, а не с экземпляром.
class d(object):
c = c1()