python中的构造方法,实例方法、静态方法、类方法、析构函数(魔法方法)
构造方法(初始化方法)
# 函数名是__init___;第一个参数是实例参数(self);
# 作用:构造方法用来初始化新创建的对象的状态和属性。
def __init__(self):
self.name = "张三"
self.age = 18
self.address = "beijing"
实例方法(对象方法)
指的是我们在类中定义的普通方法。
#只有实例化对象之后才可以使用的方法,该方法的第一个形参接收的一定是对象本身
def todo(self):
print("去%s" % self.address)
静态方法
# 格式:在方法上面添加 @staticmethod
# 参数:静态方法可以有参数也可以无参数。
# 应用场景:一般用于和类对象以及实例对象无关的代码。比较常应用在我想调用某一个类中的方法,但是我又不想实例化这个类。
想用某一个类中的方法,但是不想占用内存去实例化这个类,包括这个类可能有很多入参是没必要的。静态方法不会调用类里的任何属性或方法
# 使用方式: 类名.类方法名(或者对象名.类方法名)。
@staticmethod
def isNoneOrEmpty(string):
if string == "" or string is None:
return True
return False
类方法
# 无需实例化,可以通过类直接调用的方法,但是方法的第一个参数接收的一定是类本身
# 在方法上面添加@classmethod
# 方法的参数为 cls 也可以是其他名称,但是一般默认为cls
# cls 指向 类对象
# 应用场景:当一个方法中只涉及到静态属性的时候可以使用类方法(类方法用来修改类属性)。
# 使用 可以是 对象名.类方法名。或者是 类名.类方法名
@classmethod # 类方法
def cm(cls, a): # 类方法中如果调用 实例方法,需要把当前方法实例化以后,替代 self 传入
td = todo(a)
cls.goto_bank(td)
cls.outhome(td)
# print(cls.name)
print(cls.age)
析构函数(魔法方法)
__init__
__del__
__dict__
__getattribute__
__delattr__
所有带__的是魔法方法
# 用__del__定义析构函数,使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间。
# __del__()也是可选的,如果不提供,则Python 会在后台提供默认析构函数
class mysqlUtil:
def __init__(self):
self.conn = None
def close(self):
self.conn.close()
def __del__(self): # 析构函数
self.conn.close()
垃圾回收机制 当我们用del删除一个对象时,其实并没有直接清除该对象的内存空间。Python 采用‘引用计数’ 的算法方式来处理回收,即:当某个对象在其作用域内不再被其他对象引用的时候,Python 就自动清除对象。
而析构函数 __del__()在引用的时候就会自动清除被删除对象的内存空间
s
=
'123'
print
(
'del...running'
)
del
s