Python的描述符“__get__”没有像我预期的那样被调用,原因是什么?

时间:2016-12-03 07:07:37

标签: python class get descriptor owner

我正在尝试使用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 个答案:

答案 0 :(得分:1)

描述符必须绑定到类,而不是实例。

class d(object):
  c = c1()