|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
>>> 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
|
|