Cách gọi phương thức trong lớp python

Trong lập trình hướng đối tượng, chúng ta sử dụng các phương thức thể hiện và phương thức lớp. Bên trong một Class, chúng ta có thể định nghĩa 3 loại phương thức sau

  • phương thức sơ thẩm. Đượ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, thì các phương thức đó được gọi là phương thức thể hiện. Nó phải có tham số
    Jessa's age is: 20
    John's age is: 26
    5 để chỉ đối tượng hiện tại
  • 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 triển khai 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 đó 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
    John's age is: 26
    6 đề cập đến lớp
  • phương pháp tĩnh. Đó 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 thức này, chúng tôi không sử dụng biến đối tượng hoặc lớp vì phương thức tĩnh này không nhận bất kỳ tham số nào như
    Jessa's age is: 20
    John's age is: 26
    5 và
    Jessa's age is: 20
    John's age is: 26
    6

Ngoài ra, hãy đọc Phương thức lớp Python so với phương thức tĩnh so với phương thức sơ thẩm

Sau khi đọc bài viết này, bạn sẽ học đượ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 trình trang trí
    Jessa's age is: 20
    John's age is: 26
    9 và hàm
    classmethod[function]
    0
  • cách tự động thêm hoặc xóa các phương thức lớp

Mục lục

Phương thức 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ề một cấp độ lớp và tất cả các thể hiện của lớp đều chia sẻ một phương thức lớp

  • Một phương thức lớp được liên kết với lớp chứ không phải đối tượng của lớp. Nó chỉ có thể truy cập các biến lớp
  • 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 triển khai 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 đó là phương thức lớp. Phương thức của lớp có một tham số đầu tiên là

Jessa's age is: 20
John's age is: 26
6, tham chiếu đến lớp

Các phương thức lớp được sử dụng khi chúng ta xử lý các phương thức xuất xưởng. Các phương thức xuất xưởng là những phương thức 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 thức xuất xưởng tạo ra các triển khai cụ thể của một giao diện chung

Phương thức 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 thức lớp

Xác định phương thức lớp

Bất kỳ phương thức nào chúng ta tạo trong một lớp sẽ tự động được tạo dưới dạng 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 thức lớp sử dụng trình trang trí

Jessa's age is: 20
John's age is: 26
9 hoặc hàm
classmethod[function]
0

Các phương thức của 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 một hàm thông thường

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: 20
John's age is: 26
5 để 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 của lớp, chúng ta sử dụng từ khóa
Jessa's age is: 20
John's age is: 26
6 làm tham số đầu tiên để truy cập các biến của lớp. Do đó, phương thức lớp cho phép chúng ta kiểm soát việc thay đổi trạng thái lớp

  • Bạn có thể sử dụng một biến được đặt tên khác cho 
    Jessa's age is: 20
    John's age is: 26
    6, nhưng không khuyến khích vì self 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 Trình trang trí @classmethod

Để tạo một phương thức làm phương thức lớp, hãy thêm trình trang trí

Jessa's age is: 20
John's age is: 26
9 trước định nghĩa phương thức và thêm
Jessa's age is: 20
John's age is: 26
6 làm tham số đầu tiên cho phương thức

Trình trang trí

Jessa's age is: 20
John's age is: 26
9 là một trình trang trí chức năng tích hợp. Trong Python, chúng tôi sử dụng trình trang trí
Jessa's age is: 20
John's age is: 26
9 để khai báo một phương thức là một phương thức lớp. Trình trang trí
Jessa's age is: 20
John's age is: 26
9 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

Hãy xem cách tạo một phương thức xuất xưởng bằng phương thức lớp. Trong ví dụ này, chúng ta sẽ tạo một đối tượng lớp Student bằng phương thức 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 ta đã tạo hai đối tượng, một đối tượng sử dụng hàm tạo và đối tượng thứ hai sử dụng phương thức
    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[]
    
    3
  • Hàm tạo nhận hai đối số name và age. Mặt khác, phương thức lớp lấy
    Jessa's age is: 20
    John's age is: 26
    6,
    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[]
    
    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 của lớp không có gì ngoài một đối tượng mới
  • Trình trang trí
    Jessa's age is: 20
    John's age is: 26
    9 được sử dụng để chuyển đổi phương thức
    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[]
    
    3 thành phương thức lớp
  • Phương thức
    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[]
    
    3 lấy lớp Student [_______0_______6] làm tham số đầu tiên và trả về hàm tạo bằng cách gọi
    School Name is : ABC School
    1, tương đương với ____28_______2

ví dụ 2. Tạo phương thức lớp bằng hàm classmethod[]

Ngoài một công cụ trang trí, chức năng tích hợp sẵn

classmethod[function]
0 được sử dụng để chuyển đổi một phương thức bình thường thành một phương thức lớp.
School Name is : ABC School
4 là một hàm có sẵn trong Python, hàm này trả về một phương thức lớp cho một hàm nhất định

cú pháp

classmethod[function]
  • School Name is : ABC School
    5. Đó là tên của phương thức bạn muốn chuyển thành phương thức lớp
  • Nó trả về phương thức lớp đã chuyển đổi

Ghi chú. Phương thức bạn muốn chuyển thành phương thức lớp phải chấp nhận lớp [

Jessa's age is: 20
John's age is: 26
6] làm đối số đầu tiên, giống như phương thức thể hiện nhận thể hiện [
Jessa's age is: 20
John's age is: 26
5]

Như chúng ta đã biết, phương thức lớp được liên kết với lớp chứ không phải đối tượng. Vì vậy, chúng ta có thể gọi phương thức lớp bằng cả 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 phiên bản Python mới hơn, chúng ta nên sử dụng trình trang trí
Jessa's age is: 20
John's age is: 26
9 để tạo một phương thức lớp

Thí dụ. Tạo phương thức lớp bằng hàm

classmethod[function]
0

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[]

đầ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 của lớp, chúng ta chỉ có thể truy cập hoặc sửa đổi các biến của lớp. Hãy 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 được chia sẻ bởi tất cả các phiên bản 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

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[]

đầu ra

Jessa 20 School: ABC School
Jessa 20 School: XYZ School

Phương thức lớp trong kế thừa

Trong kế thừa, phương thức lớp của lớp cha có sẵn cho lớp con

Hãy tạo một lớp Xe có chứa một phương thức lớp xuất xưởng from_price[] sẽ trả về một thể hiện Xe từ một mức giá. Khi chúng ta gọi cùng một phương thức bằng tên lớp của đứa trẻ, nó sẽ trả về đối tượng lớp của đứa trẻ

Bất cứ khi nào chúng ta dẫn xuất một lớp từ lớp cha có phương thức lớp thì nó sẽ tạo ra thể hiện chính xác 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'

Tự động thêm phương thức lớp vào một lớp

Thông thường, chúng ta thêm các phương thức lớp vào thân lớp khi định nghĩa một lớp. Tuy nhiên, Python là một ngôn ngữ động cho phép chúng ta thêm hoặc xóa các phương thức trong thời gian chạy. Do đó, sẽ rất hữu ích khi bạn muốn mở rộng chức năng của lớp mà không thay đổi cấu trúc cơ bản của nó vì nhiều hệ thống sử dụng cùng một cấu trúc

Chúng ta cần sử dụng hàm

classmethod[function]
0 để thêm một phương thức lớp mới vào một lớp

Thí dụ

Hãy xem cách thêm một phương thức lớp mới trong lớp Sinh viên khi chạy

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: 20
John's age is: 26
0

Tự động xóa các phương thức lớp

Chúng ta có thể tự động xóa các phương thức lớp khỏi lớp. Trong Python, có hai cách để làm điều đó

  • Bằng cách sử dụng toán tử 
    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[]
    2
  • Bằng cách sử dụng phương pháp 
    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[]

Bằng cách sử dụng toán tử 

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[]
2

Toán tử 

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[]
2 xóa phương thức thể hiện được lớp thêm vào. Sử dụng cú pháp
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[]
6 để xóa phương thức của lớp

Thí dụ

Trong ví dụ này, chúng tôi sẽ xóa phương thức lớp có tên 

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[]
7 khỏi lớp Sinh viên. Nếu bạn cố truy cập sau khi xóa nó, bạn sẽ gặp Lỗi thuộc tính

Jessa's age is: 20
John's age is: 26
1

đầu ra

Jessa's age is: 20
John's age is: 26
2

Bằng cách sử dụng phương pháp

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[]
8

Phương thức

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[]
3 được sử dụng để xóa thuộc tính và phương thức được đặt tên khỏi lớp. Đối số của
Jessa 20 School: ABC School
Jessa 20 School: XYZ School
0 là một đối tượng và chuỗi. Chuỗi phải là tên của thuộc tính hoặc tên phương thức

Làm thế nào chúng ta gọi phương thức của một lớp trong Python?

Phương thức lớp [] là một hàm sẵn có trong Python, hàm này trả về một phương thức lớp cho một hàm đã cho. ; .
cú pháp. phương thức lớp [hàm]
Tham số. Hàm này chấp nhận tên hàm làm tham số
Loại trả lại. Hàm này trả về phương thức lớp đã chuyển đổi

Làm cách nào để gọi một phương thức lớp từ một phương thức lớp khác trong Python?

Gọi phương thức từ một lớp khác trong một lớp khác trong Python. chúng ta có thể gọi phương thức của một lớp khác bằng cách sử dụng tên lớp và chức năng của lớp đó với toán tử dấu chấm . sau đó chúng ta có thể gọi method_A từ lớp B bằng cách sau. hạng A. method_A[self]. {} hạng B. method_B[self]. Một.

Làm cách nào để gọi phương thức lớp mà không tạo đối tượng trong Python?

Tuy nhiên, bạn có thể làm việc khác. gọi một phương thức trong một lớp mà không tạo một đối tượng. Trình diễn phương thức tĩnh bên dưới. Định nghĩa một lớp với một phương thức. Thêm từ khóa @staticmethod phía trên để làm cho từ khóa tĩnh .

Chủ Đề