嵌套实例属性访问问题
class A:def __init__(self,name):
print(name)
self.name=name
def __get__(a,b,c):
print(a,b,c)
class B:
x=A("aa")
b=B()
b.x
b.x.name
aa
<__main__.A object at 0x0000015A3C6D6A70> <__main__.B object at 0x0000015A3C6D6AA0> <class '__main__.B'>
<__main__.A object at 0x0000015A3C6D6A70> <__main__.B object at 0x0000015A3C6D6AA0> <class '__main__.B'>
Traceback (most recent call last):
File "C:/Users/zy118/AppData/Local/Programs/Python/Python310/111.py", line 16, in <module>
b.x.name
AttributeError: 'NoneType' object has no attribute 'name' class A:
def __init__(self,name):
print(name)
self . name = name
class B:
x = A("aa")
b = B()
print(b . x . name) jackz007 发表于 2022-11-11 12:47
这样是可以,我想知道为什么加了get后就不行了,没有解决方法吗?加了get后就只能当花瓶看了吗? 本帖最后由 jackz007 于 2022-11-11 13:40 编辑
zy8818 发表于 2022-11-11 12:52
这样是可以,我想知道为什么加了get后就不行了,没有解决方法吗?加了get后就只能当花瓶看了吗?
__get__() 得有返回值
class A:
def __init__(self , name):
self . name = name
def __get__(self , obj , objtype):
return self . name
class B:
x = A("aa") # B . x 就是 A . name
b = B()
print(b . x) # b . x 就是 A . name class A:
def __init__(self,name):
print(name)
self.name=name
def __get__(a,b,c):
print("__get__: ",a,b,c)
return a
class B:
x=A("aa")
b=B()
b.x
print(b.x.name)
hrpzcf 发表于 2022-11-11 13:47
谢了兄弟,我知道了 zy8818 发表于 2022-11-11 15:15
谢了兄弟,我知道了
??? hrpzcf 发表于 2022-11-11 15:18
???
外部调用必须有A类的self指针
你说的那个就是返回了A类的self指针
页:
[1]