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__
{}
|