Дескриптор 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()
Другие вопросы по тегам