Một class có mấy phương thức khởi tạo Python

Class và Object trong Python

Nội Dung

  • 1. Lớp (Class) trong Python
  • 2. Đối tượng (Object) trong Python
  • 3. Phương thức khởi tạo (Constructor) trong Python

Một lớp (hay class) là một tập hợp thông tin khái quát của đối tượng. Một lớp sẽ là nơi chứa các khuân mẫu mà từ đó các đối tượng được tạo phải tuân theo khuân mẫu đó. Class cũng là một thực thể logic có chứa một số thuộc tính phương thức. 

Một số khái niệm về lớp (class) trong Python:

  • Các lớp được tạo bởi lớp từ khóa class trong Python.
  • Thuộc tính trong một lớp thực chất là các biến trong Python.
  • Các thuộc tính trong một lớp sẽ luôn ở phạm vi public và có thể được truy cập bằng toán tử dấu chấm (.)
  • Các phương thức trong một lớp thực chất sẽ là các hàm trong Python.

Ví dụ dưới đây, định nghĩa một lớp (class) có tên ConNguoi – trong lớp này sẽ bao gồm các thuộc tính: ten, tuoi, gioitinh. Ngoài ra lớp này còn có các phương thức như: an(), noi(), hoc()…

class ConNguoi:
    # Khai bao va gan cac gia tri mac dinh cho thuoc tinh
    HoTen = "" 
    Tuoi = 0
    GioiTinh = ""
    # Khai bao cac phuong thuc
    def an(self):
        print("Con nguoi co the an!")
    def noi(self):
        print("Con nguoi co the noi!")
    def hoc(self):
        print("Con nguoi co the hoc!")

Lưu ý: Các phương thức trong một class luôn luôn cần có tham số mặt định được truyền vào đó là self – tham số này được hiểu tương tự như con trỏ this trong lập trình hướng đối tượng.

Cách đặt tên của một thuộc tính trong lớp thường được sử dụng là các danh từ, và cách đặt tên cho một phương thức thường được sử dụng là động từ.

Để tạo một đối tượng trống trong Python, khi đó ta sẽ sử dụng từ khóa pass đặt vào bên trong thân của lớp đó như sau:

class ConNguoi:
    pass # Khai bao doi tuong trong

Trong ví dụ trên, một lớp ConNguoi được định nghĩa tuy nhiên, lớp này không có các thuộc tính và phương thức do từ khóa pass sẽ giúp cho đối tượng này thành một đối tượng trống!

2. Đối tượng (Object) trong Python

Đối tượng (Object) là một thực thể có trạng thái và hành vi gắn liền với nó. Nó có thể là bất kỳ đối tượng nào trong thế giới thực như chuột, bàn phím, ghế, bàn, bút…. Trong ngôn ngữ lập trình Python, chúng ta có các: Số nguyên, chuỗi, số thực, LIST hay Dict đều là đối tượng.

Cụ thể hơn, bất kỳ số nguyên đơn lẻ hoặc bất kỳ chuỗi đơn nào đều là một đối tượng. Ví dụ như: Số 12 là một đối tượng, chuỗi “Hello, world” là một đối tượng, một list [1,2,3,4,5,6] là một đối tượng có thể chứa các đối tượng khác….v.v. Nói chung lại, trong quá trình làm việc với Python căn bản, có thể bạn đã sử dụng các đối tượng suốt thời gian qua.

Một số khái niệm về đối tượng trong Python:

  • Trạng thái: Là việc biểu diễn các hình thái bằng các thuộc tính của một đối tượng. Nó cũng phản ánh các thuộc tính của một đối tượng.
  • Hành vi: Là việc thể hiện các hành động bằng các phương thức của một đối tượng. Nó cũng phản ánh phản ứng của một đối tượng đối với các đối tượng khác.
  • Identity: Là việc xác thực duy nhất cho một đối tượng và cho phép một đối tượng tương tác với các đối tượng khác.

Ví dụ dưới đây, định nghĩa một lớp (class) có tên ConNguoi, sau đó khai báo một đối tượng có tên là p1 từ lớp ConNguoi đã được định nghĩa.

class ConNguoi:
    # Khai bao va gan cac gia tri mac dinh cho thuoc tinh
    HoTen = "" 
    Tuoi = 0
    GioiTinh = ""
    # Khai bao cac phuong thuc
    def an(self):
        print(self.HoTen + " co the an!")
    def noi(self):
        print(self.HoTen + " co the noi!")
    def hoc(self):
        print(self.HoTen + " co the hoc!")        

# Khoi tao doi tuong p1 tu lop ConNguoi
p1 = ConNguoi()

# Truy cap cac thuoc tinh trong lop ConNguoi thong qua doi tuong p1
p1.HoTen = "Chu Minh Nam"
p1.Tuoi = 20
p1.GioiTinh = "nam"
print(p1.HoTen)
print(p1.Tuoi)
print(p1.GioiTinh)

# Truy cap cac phuong thuc trong lop ConNguoi thong qua doi tuong p1
p1.an()
p1.noi()
p1.hoc()

Kết quả:

Chu Minh Nam
20
nam
Chu Minh Nam co the an!
Chu Minh Nam co the noi!
Chu Minh Nam co the hoc!

Giải thích:

  • Đầu tiên, định nghĩa một class có tên ConNguoi, bao gồm các thuộc tính: HoTen, Tuoi, GioiTinh và các phương thức: an(), noi(), hoc()
  • Tiếp theo, khai báo đối tượng p1 từ lớp ConNguoi đối tượng này sẽ có các thuộc tính: HoTen, Tuoi, GioiTinh. Sau khi đối tượng p1 được khởi tạo, các thuộc tính trên sẽ được gán các giá trị lần lượt là: p1.HoTen = “Chu Minh Nam”, p1.Tuoi = 20 p1.GioiTinh = “nam”
  • Cuối cùng, truy cập và hiển thị giá trị của các thuộc tính, phương thức của đối tượng p1 thông qua toán tử chấm “.” Ví dụ: p1.HoTen hay p1.hoc()

3. Phương thức khởi tạo (Constructor) trong Python

Một lớp khi được định nghĩa trong Python, luôn được đi kèm bên trong là một phương thức khởi tạo. Phương thức __init__() được sử dụng trong một lớp để xây dựng một hàm khởi tạo cho một lớp. Phương thức này tương tự như các hàm tạo (constructor) trong C ++ và Java.

Phương thức __init__() sẽ được phép tự động chạy chạy ngay sau khi một đối tượng của một lớp được khởi tạo. Phương thức này hữu ích để thực hiện bất kỳ khởi tạo nào bạn muốn thực hiện với đối tượng của mình. 

Ví dụ dưới đây, khai báo một lớp có tên có tên ConNguoi, trong lớp này sẽ bao gồm các thuộc tính: ten, tuoi, gioitinh. Ngoài ra lớp này còn có các phương thức như: an(), noi(), hoc()… và một phương thức khởi tạo __init__() để đặt các giá trị mặc định cho các thuộc tính:

class ConNguoi:
    # Khai bao phuong thuc khoi tao __init__()
    def __init__(self, name, age, sex):
        # Khai bao cac thuoc tinh duoc gan bang cac gia tri truyen vao class
        self.HoTen = name
        self.Tuoi = age
        self.GioiTinh = sex
    # Khai bao cac phuong thuc
    def an(self):
        print(self.HoTen + " co the an!")
    def noi(self):
        print(self.HoTen + " co the noi!") 
    def hoc(self):
        print(self.HoTen + " co the hoc!")        

# Khoi tao doi tuong p1 tu lop ConNguoi va truyen vao cac thuoc tinh khoi tao
p1 = ConNguoi("Chu Minh Nam", 20, "nam")

# Truy cap cac thuoc tinh trong lop ConNguoi thong qua doi tuong p1
print(p1.HoTen)
print(p1.Tuoi)
print(p1.GioiTinh)

# Truy cap cac phuong thuc trong lop ConNguoi thong qua doi tuong p1
p1.an()
p1.noi()
p1.hoc()

Kết quả:

Chu Minh Nam
20
nam
Chu Minh Nam co the an!
Chu Minh Nam co the noi!
Chu Minh Nam co the hoc!

Giải thích:

  • Đầu tiên, định nghĩa một class có tên ConNguoi, bao gồm các thuộc tính: HoTen, Tuoi, GioiTinh và các phương thức: an(), noi(), hoc() và phương thức khởi tạo __init__()
  • Trong phương thức khởi tạo __init__() sẽ gán giá trị của các thuộc tính: HoTen, Tuoi, GioiTinh bằng các giá trị được truyền vào class 
  • Tiếp theo,  khai báo đối tượng p1 từ lớp ConNguoi đối tượng này sẽ cần truyền vào một số giá trị khởi tạo ban đầu vào phương thức khởi tạo trong class – câu lệnh thực hiện việc này đó là p1 = ConNguoi("Chu Minh Nam", 20, "nam")
  • Cuối cùng, truy cập và hiển thị giá trị của các thuộc tính, phương thức của đối tượng p1 thông qua toán tử chấm “.” Ví dụ: p1.HoTen hay p1.hoc()