为什么python描述符对象在分配给__init__中的类时不起作用?

时间:2016-12-07 12:27:40

标签: python descriptor

我知道python中的描述符是如何工作的,至少我在今天之前做过。

如果类成员定义activity.xaml,它是一个数据描述符,__set__()将返回foo.member而不是foo.member.__get__(foo.member, foo)个对象。但是,如果在类体中定义了foo.member,而在类创建后没有分配

,它似乎才有效

例如,此代码返回描述符对象:

foo.member

当我在类体中定义类成员时,它的行为符合预期

In [1]:  class descr(object):
   ...:         def __get__(self, obj, type=None):
   ...:                 return obj
   ...:         def __set__(self, obj, val):
   ...:                 print('Setting', val, 'to', obj)
   ...:         

In [2]: class C:
   ...:     pass
   ...: 

In [3]: c=C()

In [4]: c.foo=descr()

In [5]: c.foo
Out[5]: <__main__.descr at 0x7fd6450bc4e0>

In [6]: c.foo =5

In [7]: c.foo
Out[7]: 5

有人可以详细说明吗?

0 个答案:

没有答案