Dưới đây là một chương trình Python đơn giản, tạo ra một lớp có chứa 1 phương thức.

# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------


# A simple example class 
class Test: 
      
    # A sample method  
    def fun(self): 
        print("Hello") 
  
# Driver code 
obj = Test() 
obj.fun() 

Kết quả in ra là:

Hello

Như bạn có thể thấy ở ví dụ trên, chúng ta đã tạo ra một lớp mới bằng cách sử dụng câu lệnh class cùng với một cái tên mình muốn đặt cho lớp đó. Tiếp theo là một khối các câu lệnh được thụt lề, tạo thành phần thân của lớp. Trong trường hợp này, chúng ta đã định nghĩa ra một phương thức duy nhất, ở trong một lớp.

Tiếp theo, chúng ta sẽ tạo ra một đối tượng/thể hiện của lớp này bằng cách sử dụng tên của class, theo sau là một cặp dấu ngoặc tròn.

1. Tham số self

1. Các phương thức của lớp đều phải có thêm một tham số đầu tiên trong phần method definition – phần code định nghĩa phương thức. Chúng ta sẽ không cung cấp giá trị nào cho tham số này khi gọi tới phương thức, mà Python sẽ lo phần việc này.

2. Giả sử chúng ta có một phương thức mà không nhận vào bất kỳ đối số (argument) nào, tuy nhiên, thực tế là phương thức đó vẫn sẽ có một đối số được ẩn đi, chính là self. Hãy xem hàm fun() trong ví dụ đơn giản ở trên.

3. self trong Python thì tương đương với con trỏ this trong C++ và tham chiếu this trong Java.

Khi chúng ta gọi đến một phương thức của một đối tượng cụ thể, ví dụ myobject.method(arg1, arg2), câu lệnh trên sẽ được Python tự động chuyển đổi thành Myclass.method(myobject, arg1, arg2) – Đây chính là bản chất đặc biệt của self trong Python.

2. Phương thức __init__

Phương thức __init__ tương tự với hàm constructor trong C++ và Java. Nó sẽ chạy ngay sau khi một đối tượng của một lớp được thể hiện. Phương thức này rất hữu dụng trong việc thực hiện các tác vụ khởi tạo cần thiết mà bạn muốn làm trên đối tượng của mình.


# A Sample class with init method 
class Person: 
  
    # init method or constructor  
    def __init__(self, name): 
        self.name = name 
  
    # Sample Method  
    def say_hi(self): 
        print('Hello, my name is', self.name) 
  
p = Person('cafedev') 
p.say_hi() 

Kết quả in ra là:

Hello, my name is cafedev 

Trong ví dụ này, chúng ta đã định nghĩa cho phương thức __init__ nhận vào một tham số tên là name (đi kèm với một tham số self thông thường).

3. Instance variable và Class variable

Trong Python, Instance variable là các biến mà giá trị của chúng được gán ở bên trong một hàm constructor hoặc ở bên trong một phương thức, bằng từ khóa self.

Class variable là các biến mà giá trị của chúng được gán ở bên trong lớp (class).

Dưới đây là đoạn chương trình Python mô tả các biến mà có giá trị được gán ở bên trong phần code định nghĩa class thì được gọi là các Class variables, còn các biến được gán giá trị ở bên trong các phương thức và hàm constructor thì là các Instance variable.

# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------


# Python program to show that the variables with a value  
# assigned in class declaration, are class variables and 
# variables inside methods and constructors are instance 
# variables. 
   
# Class for Computer Science Student 
class CSStudent: 
  
    # Class Variable 
    stream = 'cse'             
  
    # The init method or constructor 
    def __init__(self, roll): 
    
        # Instance Variable     
        self.roll = roll        
   
# Objects of CSStudent class 
a = CSStudent(101) 
b = CSStudent(102) 
   
print(a.stream)  # prints "cse" 
print(b.stream)  # prints "cse" 
print(a.roll)    # prints 101 
   
# Class variables can be accessed using class 
# name also 
print(CSStudent.stream) # prints "cse"

Chúng ta cũng có thể định nghĩa các instance variables bên trong các phương thức bình thường


# Python program to show that we can create  
# instance variables inside methods 
   
# Class for Computer Science Student 
class CSStudent: 
      
    # Class Variable 
    stream = 'cse'      
      
    # The init method or constructor 
    def __init__(self, roll): 
          
        # Instance Variable 
        self.roll = roll             
  
    # Adds an instance variable  
    def setAddress(self, address): 
        self.address = address 
      
    # Retrieves instance variable     
    def getAddress(self):     
        return self.address    
  
# Driver Code 
a = CSStudent(101) 
a.setAddress("Noida, UP") 
print(a.getAddress())  

Kết quả in ra là:

Noida, UP

4. Làm thế nào để tạo ra một class trống?

Chúng ta có thể tạo ra một class trống (empty class) bằng cách sử dụng câu lệnh pass trong Python


# An empty class 
class Test: 
    pass

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!