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.
Nội dung chính
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:
- Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
- Ebook về python tại đây.
- Các series tự học lập trình khác
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!