关于_getattribute__()的疑惑_
>>> class C:def __init__(self,name,age):
self.name = name
self.age = age
def __getattribute__(self,attrname):#这里的attrname是什么
print("拿来吧你~")
return super().__getattribute__(attrname)#为什么当c.name发生的时候,他的返回值是‘小甲鱼’
>>> c = C("小甲鱼",30)
>>> c.name
拿来吧你~
'小甲鱼'
>>> c.age
拿来吧你~
30
>>>
>>> C.mro()
[<class '__main__.C'>, <class 'object'>]
本帖最后由 jackz007 于 2022-11-5 12:19 编辑
attrname 是属性的名称
a = C('abc' , 21) # a . name = 'abc' , a . age = 21,name 和 age 就是 __getattribute__() 当中的 attrname
print(a . name) # 访问对象属性的时候会自动触发 __getattribute__(),attrname =name
print(a . age) # 访问对象属性的时候会自动触发 __getattribute__(),attrname =age
因为 c = ('小甲鱼' , 30) 所以, c . name = '小甲鱼',c . age = 30 jackz007 发表于 2022-11-5 12:16
attrname 是属性的名称
因为 c = ('小甲鱼' , 30) 所以, c . name = '小甲鱼',c ....
可以解释一下这个super()吗,为什么他没有继承任何类也可以用super() 本帖最后由 jackz007 于 2022-11-5 15:27 编辑
G-Bule 发表于 2022-11-5 15:10
可以解释一下这个super()吗,为什么他没有继承任何类也可以用super()
super() 用于访问对象父类的方法,Python 每个对象都来自于共同的父类: object 本帖最后由 可恶的神经网络 于 2024-1-3 08:58 编辑
jackz007 发表于 2022-11-5 15:22
super() 用于访问对象父类的方法,Python 每个对象都来自于共同的父类: object
请问一下,如果getattribute是调用的其父类object的方法,那为什么还会返回‘小甲鱼’这个值,object里没有小甲鱼这个值呀 本帖最后由 可恶的神经网络 于 2024-1-3 08:58 编辑
可恶的神经网络 发表于 2023-12-29 17:20
请问一下,如果getattribute是调用的其父类object的方法,那为什么还会返回‘小甲鱼’这个值
页:
[1]