Bài 2: Constructor và destructor trong Python – Lập trình Python nâng cao

Trang chủ » Training » Bài 2: Constructor và destructor trong Python – Lập trình Python nâng cao
18/02/2022 Training 121 viewed

Phần trước chúng ta đã được tìm hiểu qua về class và các thành phần trong Class rồi, bài này chúng ta sẽ tiếp tục tìm hiểu về 2 phương thức đặc biệt trong một class, đó là phương thức khởi tạo và phương thức hủy trong class.

1, Phương thức khởi tạo – constructor.

Phương thức khởi tạo là một phương thức đặc biệt ở trong class, phương thức này mặc định sẽ được gọi khi chúng ta khởi tạo class đó. Nó thường được dùng để khởi tạo các thuộc, xử lý phương thức hoặc là dùng để nhận các tham số truyền vào class khi khởi tạo.

Để khai báo một phương thức khởi tạo trong class thì mọi người chỉ cần viết một hàm có tên là __init__ với cú pháp như sau:

Cú pháp:

python
copy
class className:
    def __init__(self, param1, param2,...):
        #

Trong đó:

  • className là tên của class.
  • param1, param2,... là các tham số chúng ta muốn nhận khi kèm khi khởi tạo class.

VD:

python
copy
class Person:
    def __init__(self):
        print("Class person được khởi tạo!")
        
person = Person()
# kết quả: Class person được khởi tạo!

Như các bạn đã thấy thì ở ví dụ trên mình mới chỉ khởi tạo class là nó đã thực thi phương thức __init__.

VD: Khai báo các tham số truyền vào cho phương thức khởi tạo.

python
copy
class Person:
    def __init__(self, name, age, male):
        print("Class person được khởi tạo!")
        print("Name: %s - Age: %d - Male: %d" %(name, age, male))

person = Person('Vu Thanh Tai', 22, True)
# kết quả: 
# Class person được khởi tạo!
# Name: Vu Thanh Tai - Age: 22 - Male: 1

2, Phương thức hủy – deconstructor.

Trái ngược với phương thức khởi tạo, thì phương thức hủy sẽ được gọi khi chúng ta hủy một class, hay nó cách khác nó luôn được thực thi cuối cùng khi chúng ta khởi tạo một class. Nó thường được dùng để giải phóng tài nguyên của class.

Để khai báo một phương thức hủy trong class thì mọi người chỉ việc khai báo một phương thức có tên là __del__ với cú pháp sau:

Cú pháp:

python
copy
def __del__(self):
    # code

VD: Mình sẽ khai báo một phương thức hủy cho class Person ở trên.

python
copy
class Person:
    def __init__(self, name, age, male):
        print("Class person được khởi tạo!")
        print("Name: %s - Age: %d - Male: %d" %(name, age, male))
    def __del__(self):
        print('Class Person được hủy')
person = Person('Vu Thanh Tai', 22, True)
# kết quả: 
# Class person được khởi tạo!
# Name: Vu Thanh Tai - Age: 22 - Male: 1
# Class Person được hủy

VD: Mình sẽ thêm một vài phương thức nữa cho mọi người dễ hiểu.

python
copy
class Person:
    def __init__(self, name, age, male):
        print("Class person được khởi tạo!")
        self.name, self.age, self.male = name, age, male
    
    def getName(self):
        print("Name: %s" %(self.name))
    
    def getAge(self):
        print("Age: %d" %(self.age))
    
    def getMale(self):
        print("Male: %d" %(self.male))
    
    def __del__(self):
        print('Class Person được hủy')
        del self.name,self.age,self.male

person = Person('Vu Thanh Tai', 22, True)
person.getName()
person.getAge()
person.getMale()
# kết quả: 
# Class person được khởi tạo!
# Name: Vu Thanh Tai
# Age: 22
# Male: 1
# Class Person được hủy

Như các bạn đã thấy thì sau khi thực truy xuất các phương thức trong class xong thì hàm hủy tự động được gọi, và trong hàm hủy mình đã sử dụng để giải phóng các thuộc tính trong class Person.

3, Lời kết.

Hai hàm này có thuật ngữ là magic method – các phương thức ma thuật :), và trong class thì có rất nhiều các magic methods khác nữa mình sẽ trình bày với mọi người ở phần sau nhé!

Chia sẻ:
Tags:
TOP HOME