垃圾回收
-
在Python中有自动的垃圾回收机制,它会自动将这些没有被引用的对象删除,
-
在程序中没有被引用的对象就是垃圾,这种垃圾对象过多以后会影响到程序的运行的性能,所以我们必须进行及时的垃圾回收,所谓的垃圾回收就是讲垃圾对象从内存中删除
-
不用手动处理垃圾回收
object.__del__(self) 当实例即将被销毁时调用。 这也称为终结器或(不正确的)析构函数。 如果基类具有 __del__() 方法,则派生类的 __del__() 方法(如果有)必须显式调用它以确保正确删除实例的基类部分。
特殊方法
- 特殊方法,也称为魔术方法
- 特殊方法都是使用__(双下划线)开头和结尾的
- 特殊方法一般不需要我们手动调用,需要在一些特殊情况下自动执行
特殊方法:在特殊的时间被调用,完成特殊的作用
'''
产考文档:https://docs.python.org/3/reference/datamodel.html#special-method-names
'''
from unicodedata import name
class A:
def __init__(self, name, age) -> None:
self.name = name
self.age = age
def __str__(self) -> str:
'''
这个特殊方法会在尝试将对象转换为字符串的时候调用
用来指定对象转换为字符串的结果 ' print() '
'''
#return '12345'
return 'name=%s,age=%d'%(self.name,self.age)
def __repr__(self):
'''
__repr__()这个特殊万法会在对当前对象使用 repr()函数时调用
它的作用是指定对象在 '交互模式' 中直接输出的效果
'''
pass
'''
会在对象做大于比较的时候调用,该方法的返回值将会作为比较的结果
他需要两个参数,一个self表示当前对象,other表示和当前对象比较的对象
self > other
'''
def __gt__(self, other):
return self.age > other.age
#def __bool__(self):
#return self.age >18
'''
object.__lt__(self, other)小于
object.__le__(self, other)小于等于
object.__eq__(self, other)等于
object.__ne__(self, other)不等于
object.__gt__(self, other)大于
object.__ge__(self, other)大于等于
__len__() 获取对象长度
__bool__() 指定对象转化为布尔值
__del__() 在对象被垃圾回收前调用
'''
a = A('A', 5)
b = A('b', 15)
#当我们打印一个对象时,实际上打印的是对象的中特殊方法 __str__() 的返回值
print(a,b)
print('a>b:',a > b)
print(bool(a))