标签:一个 file 通过 show data- python 派生 级别 __del__
isinstance(obj,cls)检查是否obj是否是类 cls 的对象
class Foo(object):
pass
obj = Foo()
isinstance(obj, Foo)
issubclass(sub, super)检查sub类是否是 super 类的派生类
class Foo(object):
pass
class Bar(Foo):
pass
issubclass(Bar, Foo)
反射:通过字符串映射到对象的属性
class BlackMedium:
feature=‘Ugly‘
def __init__(self,name,addr):
self.name=name
self.addr=addr
def sell_house(self):
print(‘%s 黑中介卖房子啦,傻逼才买呢,但是谁能证明自己不傻逼‘ %self.name)
def rent_house(self):
print(‘%s 黑中介租房子啦,傻逼才租呢‘ %self.name)
b1=BlackMedium(‘万成置地‘,‘回龙观天露园‘)
#检测是否含有某属性
print(hasattr(b1,‘name‘))
print(hasattr(b1,‘sell_house‘))
#获取属性
n=getattr(b1,‘name‘)
print(n)
func=getattr(b1,‘rent_house‘)
func()
# getattr(b1,‘aaaaaaaa‘) #报错
print(getattr(b1,‘aaaaaaaa‘,‘不存在啊‘))
#设置属性
setattr(b1,‘sb‘,True)
setattr(b1,‘show_name‘,lambda self:self.name+‘sb‘)
print(b1.__dict__)
print(b1.show_name(b1))
#删除属性
delattr(b1,‘addr‘)
delattr(b1,‘show_name‘)
delattr(b1,‘show_name111‘)#不存在,则报错
print(b1.__dict__)
用法
class Foo: #Dict
def __init__(self,name):
self.name=name
def __getitem__(self, item): #item=‘namexxx‘
# print(‘getitem...‘)
return self.__dict__.get(item)
def __setitem__(self, key, value):
# print(‘setitem...‘)
# print(key,value)
self.__dict__[key]=value
def __delitem__(self, key):
# print(‘delitem...‘)
# print(key)
del self.__dict__[key]
T = Foo(‘alex‘)
# print(T.__dict__)
#查,会触发getitem的运行
print(T[‘name‘])
#改,会触发setitem的运行
T[‘name‘] = ‘Alex‘
print(T[‘name‘])
#删除,会触发detitem的运行
del T[‘name‘]
print(T[‘name‘])
__str__只在打印的时候会触发
class Foo:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
#在打印的时候会触发运行
def __str__(self):
return (‘<name:%s><age:%s><sex:%s>‘%(self.name,self.age,self.sex))
obj = Foo(‘alex‘,38,‘女‘)
print(obj)
‘‘‘
输出结果:
<name:alex><age:38><sex:女>
‘‘‘
析构方法,当对象在内存中被释放时,自动触发执行
注:如果产生的对象仅仅只是python程序级别的(用户级),那么无需定义__del__,如果产生的对象的同时还会向操作系统发起系统调用,即一个对象有用户级与内核级两种资源,比如(打开一个文件,创建一个数据库链接),则必须在清除对象的同时回收系统资源,这就用到了__del__。
class Open:
def __init__(self,filename):
print(‘open file.......‘)
self.filename=filename
def __del__(self):
print(‘回收操作系统资源:self.close()‘)
f=Open(‘settings.py‘)
# del f #f.__del__()
print(‘----main------‘) #del f #f.__del__()
标签:一个 file 通过 show data- python 派生 级别 __del__
原文地址:https://www.cnblogs.com/yjiu1990/p/9144517.html