class Black:
feture="ugly"
def __init__(self,name,addr):
self.addr=addr
self.name=name
def sell_house(self):
print("[%s] 正在卖房子"%self.name)
def rent_house(self):
print("[%s]正在租房子,傻逼才租呢?"%self.name)
b1=Black("dream","北京海淀")
print(hasattr(Black,"feture"))
#b1.name--->b1__dict__["name"]
# print(hasattr(b1,"name"))#b1.name
# print(hasattr(b1,"sell_house"))
#
#
# print(getattr(b1,"name"))
# print(getattr(b1,"sell_house"))
#
# func=getattr(b1,"rent_house")#没有报错
# func()
#
#
# print(getattr(b1,"rent_house11","没有这个属性"))
# b1.sb=True
# setattr(b1,"sb",True)
# setattr(b1,"name","alex")
setattr(b1,"func",lambda x:x+1)
setattr(b1,"func1",lambda self:self.name+"sb")
print(b1.__dict__)
print(b1.func)
print(b1.func(1))
print(b1.func1(b1))
# del b1.sb
# print(b1.__dict__)
# delattr(b1,"sb")
# print(b1.__dict__)
# class Foo:
# x=1
# def __init__(self,y):
# self.y=y
#
# def __getattr__(self, item):
# print("执行__getattr__")
#
# def __delattr__(self, item):
# print("删除操作__delattr__")
#
# def __setattr__(self, key, value):#设定属性
# print("执行__setattr__")
# # self.key=value
# self.__dict__[key]=value
# f1=Foo(10)
#
# print(f1.y)
# print(getattr(f1,"y"))# len(str)--->str.__len__()
#
# f1.ss #调用一个对象不存在的属性时触发__getattr__
#
#
# del f1.y#删除的时候触发__delattr__属性
# print(f1.x)
#
# f1.x=2#赋值的时候触发__setattr__
# print(f1.__dict__)
# print(dir(Foo))
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.__dict__[key]=value
else:
print("必须是字符串类型")
def __delattr__(self, item):
# print("执行delattr",item)
print("不允许删除属性[%s]"%item)
#del self.item
# self.__dict__.pop(item)
f1=Foo("alex")
f1.age=18#触发__setattr__
#print(f1.__dict__)
# print(f1.name)
# print(f1.age)
# print(f1.gender)
print(f1.__dict__)
del f1.name
print(f1.__dict__)
# print(f1.__dict__)