我了解python描述符,但是对此有些困惑。如果您具有以下类描述符class Descriptor(object): def __get__(self, instance, owner): print 'getting' return self.value def __set__(self, instance, value): print 'setting' self.value = value def __delete__(self, instance): print 'deleting' del self.value我们要管理其属性的类是这样的。class Test(object): name = Descriptor() def __init__(self, name): print 'init test' self.name = name当我创建Test类的对象并执行某些操作时,它会给我这样的答案...t = Test('abc')init testsetting>>> t.namegetting 'abc'>>> del t.namedeleting>>> t<__main__.Test object at 0x013FCCD0>>>> t.namegetting 现在我想要一个类Test1像这样。class Test1(object): def __init__(self, value): print 'init test1' self.name = Descriptor() self. value = value如果我创建Test1的对象并尝试访问Test1实例的属性,则会得到类似以下的输出。t1 = Test1(12)t1.name>>> getting>>> 12>>> t1.name = 30>>> setting问1)我的问题是这个名称属性是否在Test1的init中声明,是否绑定到Test1的实例...因为当我尝试获取t1的属性字典时,它返回空dict ...t1.__dict__>>> {}与类Test的实例t相同 t.__dict__ >>> {}当我向这些实例中的任何一个添加新属性时,就像这样... t.some = 'some' >>> t1.some = 'some'再一次,如果我尝试访问属性字典,它只会给我刚才添加的属性..现在所有实例属性t.__dict__>>> {'some': 'some'}>>> t1.__dict__>>> {'some': 'some'}问题2)那么init中定义的实例属性(例如,类Descriptor和Test中的变量名称和值)与实例创建后定义的属性(例如变量t.some)之间有什么区别?问3)类Test与类Test1有何不同。
添加回答
举报
0/150
提交
取消