|
发表于 2022-12-6 12:40:51
|
显示全部楼层
- class C:
- def __init__(self,name,age):
- self.name = name
- self.__age = age
-
- c = C("小甲鱼",18)
- hasattr(c,"name")
- True
- getattr(c,"name")
- '小甲鱼'
- getattr(c,"_C__age")
- 18
- setattr(c,"_C__age",19)
- getattr(c,"_C__age")
- 19
- delattr(c,"_C__age")
- hasattr(c,"_C__age")
- False
- class C:
- def __init__(self,name,age):
- self.name = name
- self.__age = age
- def __getattribute__(self,attrname):
- print("拿来吧~你~")
- return super().__getattribute__(attrname)
-
- c = C("小甲鱼",18)
- getattr(c,"name")
- 拿来吧~你~
- '小甲鱼'
- c._C__age
- 拿来吧~你~
- 18
- c.FishC
- 拿来吧~你~
- Traceback (most recent call last):
- File "<pyshell#21>", line 1, in <module>
- c.FishC
- File "<pyshell#17>", line 7, in __getattribute__
- return super().__getattribute__(attrname)
- 拿来吧~你~
- 拿来吧~你~
- AttributeError: 'C' object has no attribute 'FishC'
- class C:
- def __init__(self,name,age):
- self.name = name
- self.__age = age
- def __getattribute__(self,attrname):
- print("拿来吧~你~")
- return super().__getattribute__(attrname)
- def __getattr__(self,attrname):
- if attrname == "FishC":
- print ("I love FishC.")
- else:
- raise AttributeError(attrname)
-
- c = C("小甲鱼",18)
- c.FishC
- 拿来吧~你~
- I love FishC.
- c.x
- 拿来吧~你~
- Traceback (most recent call last):
- File "<pyshell#31>", line 1, in <module>
- c.x
- File "<pyshell#28>", line 12, in __getattr__
- raise AttributeError(attrname)
- 拿来吧~你~
- 拿来吧~你~
- AttributeError: x
- class D:
- def __setattr__(self,name,value):
- self.__dict__[name] = value
-
- d = D()
- d.name = "小甲鱼"
- d.name
- '小甲鱼'
- class D:
- def __setattr__(self,name,value):
- self.__dict__[name] = value
- def __delattr__(self,name):
- del self.__dict__[name]
-
- d = D()
- d.name = "小甲鱼"
- d.__dict__
- {'name': '小甲鱼'}
- del d.name
- d.__dict__
- {}
复制代码
|
|