python構造方法和析構方法
阿新 • • 發佈:2022-05-26
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 物件沒有找到