DANH MỤC: PYTHON NÂNG CAO

Bài 2: Constructor và destructor trong Python


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:

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:

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.

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:

def __del__(self):
    # code

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

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.

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é!

Nguồn: Toidicode.com

Thông tin tác giả

Vũ Thanh Tài

Vũ Thanh Tài

Biển học vô biên, quay đầu là dại!

Hãy tham gia group facebook để cùng giao lưu chia sẻ kiến thức! Tham Gia