您的位置:首页 > 编程语言 > Python开发

python内置方法

2022-03-22 16:19 597 查看

一:内置方法

1.什么是内置方法?

定义在类内部,__开头并且__结尾的属性会在满足某种条件下自动触发

2.为何要用内置方法?

  • 为了定制化我们的类or对象 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象
class Foo(object):
pass

obj = Foo()

print(isinstance(obj,Foo))  # 判断obj是不是Foo的一个实例或者说对象
# True
print(isinstance([1,2,3],list)) # 判断[1,2,3]是不是list的实例
# True

issubclass(sub, super)检查sub类是否是 super 类的派生类

class Foo(object):
pass

class Bar(Foo):
pass

print(issubclass(Foo,object)) # 判断Foo是不是object的子类
print(issubclass(Bar, Foo))  # 判断Bar是不是Foo的子类

__str__改变对象的字符串显示

class People:   # 定义一个People类
def __init__(self,name,age):
self.name = name
self.age = age

def __str__(self):     # 打印对象自动触发
return "<%s:%s>" %(self.name,self.age)  # 返回值

obj = People("egon",19)
print(obj)  # print(obj.__str__())
# <egon:19>

__del__是在删除对象时触发 __del__会在对象被删除时自动触发。由于Python自带的垃圾回收机制会自动清理Python程序的资源,所以当一个对象只占用应用程序级资源时,完全没必要为对象定制__del__方法,但在产生一个对象的同时涉及到申请系统资源(比如系统打开的文件)的情况下,关于系统资源的回收,Python的垃圾回收机制便派不上用场了,需要我们为对象定制该方法,用来在对象被删除时自动触发回收系统资源的操作

# 例1:应用程序
class People:
def __init__(self,name,age):
self.name = name
self.age = age

def __del__(self):  # del obj在删除对象时会触发这个方法的运行
print('++++>')

# del obj   # 即使不运行删除对象代码,程序运行完回收应用程序的资源也会触发__del__运行
print('====end====')  # 当这行代码运行完程序就结束了,结束了就会回收所有的应用程序资
# 源并自动清理所有的对象和内存地址
# 打印结果
# ====end=====
# ++++>

# 例2:操作系统
class People:
def __init__(self,name,age):
self.name = name
self.age = age
# 文件对象关联的是操作系统的资源一旦打开系统文件,就不会自己关,操作系统资源也不会自动回收
self.f = open('a.txt',mode='rt',encoding='utf-8')

def __del__(self):  # 这个时候就要用到__del__来清理操作系统资源了
self.f.close()

obj = People("egon",19)

# del obj
print('====end====') # 当这行代码运行完程序就结束了,结束了就会清理对象的内存地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: