关于python里__init__()和__del__()函数

1. 构造函数:__init__(self,…)


  • 是python里的构造函数,它在创造对象之初被调用,负责对数据进行初始化。
  • 当自己不想手动添加构造方法时,python会自动写一个默认的构造函数。



1.1 无参构造函数


在类中定义一个无参构造函数时,一般情况下函数内容写pass即可。这里为了体现创建对象后,程序调用构造函数和变量的时间顺序,在函数中输出一行中文。

class Test():
    num = 0
    # 构造函数
    def __init__(self):
        print("调用无参构造函数")

# 创造对象
test = Test()
print(test.num)

运行结果:

调用无参构造函数
0

注:

  • 函数的参数部分一定不能忘记带self!
  • 函数里的内容会在创造对象时最先被实现,所以会先输出__init__()函数的内容,再输出test.num的值



1.2 有参构造函数


在有参构造函数中,可以传入除self以外的参数。利用有参构造函数的好处是可以在创建对象之初对变量进行初始化。

class Test():
    num = 0
    # 构造函数
    def __init__(self, n):
        self.num = n
        print("调用有参构造函数")

# 创造对象,在括号中传值进行初始化
test = Test(10)
print(test.num)

运行结果

调用有参构造函数
10

注:

  • 在创建对象时,将10赋值给n。然后在构造函数中,利用n的值对self.num进行初始化。因此实现的结果中test.num的值为10。



2. 析构函数:__del__(self)


  • 是python里的析构函数,它在销毁对象的时候被调用,负责对建立对象时开辟的内存空间进行清理和释放。
  • 当自己不想手动添加析构方法时,python会自动写一个默认的析构函数。
class Test():
    num = 0

    # 构造函数
    def __init__(self):
        print("调用构造函数")

    # 析构函数
    def __del__(self):
        print("调用析构函数")

# 创造对象
test = Test()
print(test.num)

# 输出无关内容
print("hello world")

运行结果:

调用构造函数
0
hello world
调用析构函数

注:

  • 析构函数只能有self这一个参数!
  • 重点注意析构函数调用的时间! 析构函数在程序运行的末尾才被调用,因为那时候才会销毁对象。所以可以在上面的运行结果中看到:程序先输出hello world的无关内容后才调用析构函数

你可能感兴趣的:(关于python里__init__()和__del__()函数)