"""
__delattr__
__setattr__
# 属性不存在的时候,会调用
__getattr__
"""
class Foo:
def __init__(self,name):
self.name = name
# 自定义获取属性过程
def __getattr__(self,item):
print('====>属性[%s]不存在!'%item)
# 自定义设置属性过程
def __setattr__(self,key,value):
print("执行__setattr__",key,value)
if type(value) is str:
print("开始设置")
# 进入死循环
# self.key = value => __setattr__ =>
# self.key = value => __setattr__ =>
self.__dict__[key] = value
else:
print("必须是字符串类型")
# 自定义删除属性过程
def __delattr__(self,item):
print('不允许删除属性[%s]!'%item)
# del self.item
# print("执行__delattr__")
# self.__dict__.pop(item)
# print(Foo.__dict__)
# print(dir(Foo))
f = Foo("Jhou")
f.age #调用 __getattr__
f.sex = "女"
del f.name
print(f.__dict__)
16.双下划线开头的attr方法
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...