Trong lập trình hướng đối tượng, chúng tôi sử dụng các phương thức thể hiện và phương thức lớp. Bên trong một lớp, chúng ta có thể xác định ba loại phương thức sau.
- Phương thức ví dụ: Được sử dụng để truy cập hoặc sửa đổi trạng thái đối tượng. Nếu chúng ta sử dụng các biến thể hiện bên trong một phương thức, các phương thức như vậy được gọi là các phương thức thể hiện. Nó phải có tham số
Jessa's age is: 20
5 để tham khảo đối tượng hiện tại.: Used to access or modify the object state. If we use instance variables inside a method, such methods are called instance methods. It must have a
John's age is: 26Jessa's age is: 20
5 parameter to refer to the current object.
John's age is: 26 - Phương pháp lớp: Được sử dụng để truy cập hoặc sửa đổi trạng thái lớp. Trong việc thực hiện phương thức, nếu chúng ta chỉ sử dụng các biến lớp, thì loại phương thức như vậy, chúng ta nên khai báo như một phương thức lớp. Phương thức lớp có tham số
Jessa's age is: 20
6 đề cập đến lớp.: Used to access or modify the class state. In method implementation, if we use only class variables, then such type of methods we should declare as a class method. The class method has a
John's age is: 26Jessa's age is: 20
6 parameter which refers to the class.
John's age is: 26 - Phương pháp tĩnh: Đây là một phương pháp tiện ích chung thực hiện một nhiệm vụ trong sự cô lập. Bên trong phương pháp này, chúng tôi không sử dụng phiên bản hoặc biến lớp vì phương thức tĩnh này không có bất kỳ tham số nào như
Jessa's age is: 20
5 và
John's age is: 26Jessa's age is: 20
6.: It is a general utility method that performs a task in isolation. Inside this method, we don’t use instance or class variable because this static method doesn’t take any parameters like
John's age is: 26Jessa's age is: 20
5 and
John's age is: 26Jessa's age is: 20
6.
John's age is: 26
Ngoài ra, đọc phương thức lớp Python so với phương pháp tĩnh so với phương thức thể hiện. Python Class method vs Static method vs Instance method.
Sau khi đọc bài viết này, bạn sẽ học::
- Cách tạo và sử dụng các phương thức lớp trong Python
- Tạo phương thức lớp bằng cách sử dụng hàm trang trí
Jessa's age is: 20
9 và
John's age is: 26
0classmethod[function]
- cách thêm các phương thức lớp thêm hoặc xóa các phương thức lớp
Phương pháp lớp trong Python là gì
Các phương thức lớp là các phương thức được gọi trên chính lớp, không phải trên một thể hiện đối tượng cụ thể. Do đó, nó thuộc về cấp độ lớp và tất cả các trường hợp lớp chia sẻ một phương thức lớp.
- Một phương thức lớp bị ràng buộc với lớp và không phải là đối tượng của lớp. Nó chỉ có thể truy cập các biến lớp. and not the object of the class. It can access only class variables.
- Nó có thể sửa đổi trạng thái lớp bằng cách thay đổi giá trị của biến lớp sẽ áp dụng trên tất cả các đối tượng lớp.
Trong thực hiện phương thức, nếu chúng ta chỉ sử dụng các biến lớp, chúng ta nên khai báo các phương thức như phương thức lớp. Phương thức lớp có
Jessa's age is: 206 là tham số đầu tiên, đề cập đến lớp.
John's age is: 26
Phương pháp lớp được sử dụng khi chúng ta đang xử lý các phương pháp nhà máy. Phương pháp nhà máy là những phương pháp trả về một đối tượng lớp cho các trường hợp sử dụng khác nhau. Do đó, các phương pháp nhà máy tạo ra việc triển khai cụ thể của một giao diện chung.dealing with factory methods. Factory methods are those methods that return a class object for different use cases. Thus, factory methods create concrete implementations of a common interface.
Phương pháp lớp có thể được gọi bằng cách sử dụng
classmethod[function]
2 cũng như bằng cách sử dụng một đối tượng của lớp.Xác định phương pháp lớp
Bất kỳ phương thức nào chúng tôi tạo trong một lớp sẽ tự động được tạo như một phương thức thể hiện. Chúng ta phải nói rõ ràng với Python rằng đó là một phương pháp lớp sử dụng hàm trang trí
Jessa's age is: 209 hoặc
John's age is: 26
classmethod[function]
0.Các phương thức lớp được xác định bên trong một lớp và nó khá giống với việc xác định chức năng & nbsp;
Giống như, bên trong một phương thức thể hiện, chúng tôi sử dụng từ khóa
Jessa's age is: 205 để truy cập hoặc sửa đổi các biến thể hiện. Tương tự bên trong phương thức lớp, chúng tôi sử dụng từ khóa
John's age is: 26
Jessa's age is: 206 làm tham số đầu tiên để truy cập các biến lớp. Do đó, phương pháp lớp cho phép chúng tôi kiểm soát thay đổi trạng thái lớp.
John's age is: 26
- Bạn có thể sử dụng a & nbsp; biến & nbsp; được đặt tên khác nhau cho & nbsp; ____ 16, nhưng nó không được khuyến khích vì bản thân là quy ước được đề xuất trong Python.
- Phương thức lớp chỉ có thể truy cập các thuộc tính lớp, không phải thuộc tính thể hiện
Ví dụ 1: Tạo phương thức lớp bằng cách sử dụng bộ trang trí @ClassMethod
Để tạo phương thức làm phương thức lớp, hãy thêm
Jessa's age is: 209 Trình trang trí trước định nghĩa phương thức và thêm
John's age is: 26
Jessa's age is: 206 làm tham số đầu tiên cho phương thức.
John's age is: 26
Bộ trang trí
Jessa's age is: 209 là một công cụ trang trí chức năng tích hợp. Trong Python, chúng tôi sử dụng trình trang trí
John's age is: 26
Jessa's age is: 209 để khai báo một phương pháp như một phương pháp lớp. Bộ trang trí
John's age is: 26
Jessa's age is: 209 là một biểu thức được đánh giá sau khi chức năng của chúng tôi được xác định.
John's age is: 26
Hãy cùng xem cách tạo phương thức nhà máy bằng phương pháp lớp. Trong ví dụ này, chúng tôi sẽ tạo một đối tượng lớp học sinh bằng phương pháp lớp.
from datetime import date
class Student:
def __init__[self, name, age]:
self.name = name
self.age = age
@classmethod
def calculate_age[cls, name, birth_year]:
# calculate age an set it as a age
# return new object
return cls[name, date.today[].year - birth_year]
def show[self]:
print[self.name + "'s age is: " + str[self.age]]
jessa = Student['Jessa', 20]
jessa.show[]
# create new object using the factory method
joy = Student.calculate_age["Joy", 1995]
joy.show[]
Đầu ra
Jessa's age is: 20
John's age is: 26
- Trong ví dụ trên, chúng tôi đã tạo hai đối tượng, một đối tượng sử dụng hàm tạo và thứ hai bằng phương pháp
3.class School: # class variable name = 'ABC School' def school_name[cls]: print['School Name is :', cls.name] # create class method School.school_name = classmethod[School.school_name] # call class method School.school_name[]
- Trình xây dựng lấy hai đối số tên và tuổi. Mặt khác, phương thức lớp lấy
Jessa's age is: 20
6,
John's age is: 26
5 vàclass School: # class variable name = 'ABC School' def school_name[cls]: print['School Name is :', cls.name] # create class method School.school_name = classmethod[School.school_name] # call class method School.school_name[]
6 và trả về một thể hiện lớp mà không có gì ngoài một đối tượng mới.class School: # class variable name = 'ABC School' def school_name[cls]: print['School Name is :', cls.name] # create class method School.school_name = classmethod[School.school_name] # call class method School.school_name[]
- Bộ trang trí
Jessa's age is: 20
9 được sử dụng để chuyển đổi phương thức
John's age is: 26
3 sang phương pháp lớp.class School: # class variable name = 'ABC School' def school_name[cls]: print['School Name is :', cls.name] # create class method School.school_name = classmethod[School.school_name] # call class method School.school_name[]
- Phương thức
3 lấy lớp sinh viên [class School: # class variable name = 'ABC School' def school_name[cls]: print['School Name is :', cls.name] # create class method School.school_name = classmethod[School.school_name] # call class method School.school_name[]
Jessa's age is: 20
6] làm tham số đầu tiên và trả về hàm tạo bằng cách gọi
John's age is: 26School Name is : ABC School
1, tương đương vớiSchool Name is : ABC School
2.
Ví dụ 2: Tạo phương thức lớp bằng hàm classMethod []
Ngoài một bộ trang trí, hàm tích hợp
classmethod[function]
0 được sử dụng để chuyển đổi phương pháp bình thường thành phương pháp lớp. ________ 44 & nbsp; là một hàm sẵn có trong Python, trả về một phương thức lớp cho một hàm nhất định.Syntax::
classmethod[function]
School Name is : ABC School
5: Đây là tên của phương thức bạn muốn chuyển đổi như một phương thức lớp.- Nó trả về phương thức lớp đã chuyển đổi.
Lưu ý: Phương thức bạn muốn chuyển đổi dưới dạng phương thức lớp phải chấp nhận lớp [Jessa's age is: 20
6] là đối số đầu tiên, giống như một phương thức thể hiện nhận phiên bản [
John's age is: 26Jessa's age is: 20
5].: The method you want to convert as a class method must accept class [
John's age is: 26
Jessa's age is: 206] as the first argument, just like an instance method receives the instance [
John's age is: 26
Jessa's age is: 205].
John's age is: 26
Như chúng ta đã biết, phương thức lớp bị ràng buộc với lớp chứ không phải là một đối tượng. Vì vậy, chúng ta có thể gọi phương thức lớp cả bằng cách gọi lớp và đối tượng.
Hàm
classmethod[function]
0 là cách cũ hơn để tạo phương thức lớp trong Python. Trong một phiên bản mới hơn của Python, chúng ta nên sử dụng trình trang trí Jessa's age is: 209 để tạo phương thức lớp.
John's age is: 26
Ví dụ: Tạo phương thức lớp bằng hàm
0: Create class method using classmethod[function]
classmethod[function]
0 functionclass School:
# class variable
name = 'ABC School'
def school_name[cls]:
print['School Name is :', cls.name]
# create class method
School.school_name = classmethod[School.school_name]
# call class method
School.school_name[]
Đầu ra
School Name is : ABC School
Ví dụ 3: Truy cập các biến lớp trong các phương thức lớp
Sử dụng phương thức lớp, chúng tôi chỉ có thể truy cập hoặc sửa đổi các biến lớp. Hãy cùng xem cách truy cập và sửa đổi các biến lớp trong phương thức lớp.
Các biến lớp là & nbsp; được chia sẻ bởi tất cả các trường hợp của một lớp. Sử dụng phương thức lớp, chúng ta có thể sửa đổi trạng thái lớp bằng cách thay đổi giá trị của biến lớp sẽ áp dụng trên tất cả các đối tượng lớp.shared by all instances of a class. Using the class method we can modify the class state by changing the value of a class variable that would apply across all the class objects.
class Student:
school_name = 'ABC School'
def __init__[self, name, age]:
self.name = name
self.age = age
@classmethod
def change_school[cls, school_name]:
# class_name.class_variable
cls.school_name = school_name
# instance method
def show[self]:
print[self.name, self.age, 'School:', Student.school_name]
jessa = Student['Jessa', 20]
jessa.show[]
# change school_name
Student.change_school['XYZ School']
jessa.show[]
Output::
Jessa 20 School: ABC School
Jessa 20 School: XYZ School
Phương pháp lớp trong kế thừa
Trong kế thừa, phương pháp lớp của lớp cha có sẵn cho một lớp con.
Hãy để tạo ra một lớp xe có chứa phương thức lớp nhà máy từ_price [] sẽ trả lại một thể hiện phương tiện từ một mức giá. Khi chúng ta gọi cùng một phương thức bằng cách sử dụng tên lớp trẻ con, nó sẽ trả về đối tượng lớp trẻ con.
Bất cứ khi nào chúng tôi lấy một lớp từ một lớp cha có phương thức lớp thì nó sẽ tạo đúng phiên bản của lớp dẫn xuất. Ví dụ sau đây cho thấy phương thức lớp hoạt động như thế nào trong kế thừa.
Thí dụ
class Vehicle:
brand_name = 'BMW'
def __init__[self, name, price]:
self.name = name
self.price = price
@classmethod
def from_price[cls, name, price]:
# ind_price = dollar * 76
# create new Vehicle object
return cls[name, [price * 75]]
def show[self]:
print[self.name, self.price]
class Car[Vehicle]:
def average[self, distance, fuel_used]:
mileage = distance / fuel_used
print[self.name, 'Mileage', mileage]
bmw_us = Car['BMW X5', 65000]
bmw_us.show[]
# class method of parent class is available to child class
# this will return the object of calling class
bmw_ind = Car.from_price['BMW X5', 65000]
bmw_ind.show[]
# check type
print[type[bmw_ind]]
Đầu ra
BMW X5 65000 BMW X5 4875000 class '__main__.Car'
Ví dụ 3: Truy cập các biến lớp trong các phương thức lớp
Sử dụng phương thức lớp, chúng tôi chỉ có thể truy cập hoặc sửa đổi các biến lớp. Hãy cùng xem cách truy cập và sửa đổi các biến lớp trong phương thức lớp.
Các biến lớp là & nbsp; được chia sẻ bởi tất cả các trường hợp của một lớp. Sử dụng phương thức lớp, chúng ta có thể sửa đổi trạng thái lớp bằng cách thay đổi giá trị của biến lớp sẽ áp dụng trên tất cả các đối tượng lớp.
Example:
Phương pháp lớp trong kế thừa
class Student:
school_name = 'ABC School'
def __init__[self, name, age]:
self.name = name
self.age = age
def show[self]:
print[self.name, self.age]
# class ended
# method outside class
def exercises[cls]:
# access class variables
print["Below exercises for", cls.school_name]
# Adding class method at runtime to class
Student.exercises = classmethod[exercises]
jessa = Student["Jessa", 14]
jessa.show[]
# call the new method
Student.exercises[]
Đầu ra
Jessa's age is: 200
John's age is: 26
Ví dụ 3: Truy cập các biến lớp trong các phương thức lớp
Sử dụng phương thức lớp, chúng tôi chỉ có thể truy cập hoặc sửa đổi các biến lớp. Hãy cùng xem cách truy cập và sửa đổi các biến lớp trong phương thức lớp.
- Các biến lớp là & nbsp; được chia sẻ bởi tất cả các trường hợp của một lớp. Sử dụng phương thức lớp, chúng ta có thể sửa đổi trạng thái lớp bằng cách thay đổi giá trị của biến lớp sẽ áp dụng trên tất cả các đối tượng lớp.
- Phương pháp lớp trong kế thừa
Các biến lớp là & nbsp; được chia sẻ bởi tất cả các trường hợp của một lớp. Sử dụng phương thức lớp, chúng ta có thể sửa đổi trạng thái lớp bằng cách thay đổi giá trị của biến lớp sẽ áp dụng trên tất cả các đối tượng lớp.
Phương pháp lớp trong kế thừa
Example::
Trong kế thừa, phương pháp lớp của lớp cha có sẵn cho một lớp con.
Jessa's age is: 201
John's age is: 26
Đầu ra
Jessa's age is: 202
John's age is: 26
Ví dụ 3: Truy cập các biến lớp trong các phương thức lớp
Sử dụng phương thức lớp, chúng tôi chỉ có thể truy cập hoặc sửa đổi các biến lớp. Hãy cùng xem cách truy cập và sửa đổi các biến lớp trong phương thức lớp.
Thí dụ
Jessa's age is: 203
John's age is: 26
Đầu ra
Jessa's age is: 202
John's age is: 26