1. 程式人生 > 其它 >python構造方法和析構方法

python構造方法和析構方法

python的構造方法作用:

*構造方法是一種特殊方法(init)以兩個下劃線開頭,兩個下劃線結尾,用於類的初始化。
*如果類中定義了構造方法,在定義物件時會自動呼叫構造方法
*構造方法通常用來初始化物件變數

構造方法的例項:

  • 無參的構造方法(在定義方法時引數列表中第一個引數需要加上self,程式預設會把物件本身當做引數傳給self)
class Student():        
    def __init__(self):    
        self.name = "張三"    #這一句是用來初始化物件屬性的

    def fun(self):
        print(self.name)

stu = Student()
stu.fun()

輸出結果為:
張三

如果需要改變self.name裡面的值可以像下面這樣

class Student():
    def __init__(self):
        self.name = "張三"

    def fun(self):
        print(self.name)

stu = Student()
stu.name = "王五"
stu.fun()

輸出結果為:
王五

  • 有參的構造方法
class Student():
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def fun(self):
        print("姓名:",self.name)
        print("年齡:",self.age)

stu = Student('張三',19)
stu.fun()

輸出結果為:
姓名: 張三
年齡: 19

在初始化時可以給屬性新增預設值如下

class Student():
    def __init__(self,name="張三",age=18):
        self.name = name
        self.age = age

    def fun(self):
        print("姓名:",self.name)
        print("年齡:",self.age)

stu1 = Student()
stu1.fun()
stu2 = Student('李四',19)
stu2.fun()

輸出結果為:


姓名: 張三
年齡: 18
姓名: 李四
年齡: 19

python的析構方法作用:

*析構方法的構成和構造方法是一樣的(del),作用是在一個物件呼叫完成後,會將物件釋放掉,不在使用

析構方法的例項

class Student():
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __del__(self):
        print("物件已被清理")  

stu1 = Student('李四',19)
print(stu1.name)
print(stu1.age)
del stu1
print(stu1.name)
print(stu1.age)

輸出結果為:
李四
19
物件已被清理 #這裡提示有關李四的物件 stu1 已經被清理,再去呼叫 stu1 就會報錯一下就是報錯內容
Traceback (most recent call last):
File "E:\Python\stu.py", line 12, in
print(stu1.name)
NameError: name 'stu1' is not defined #報錯原因 stu1 物件沒有找到