Làm thế nào để bạn truy cập một chức năng lớp trong python?

Một phương thức lớp là một phương thức được chia sẻ giữa tất cả các đối tượng. Để gọi một phương thức của lớp, hãy đặt lớp đó làm đối số đầu tiên

Các phương thức của lớp có thể được gọi từ các thể hiện và từ chính lớp đó. Tất cả đều sử dụng cùng một phương pháp. Phương thức có thể sử dụng các biến và phương thức của lớp

khóa học liên quan. Hoàn thành khóa học & bài tập lập trình Python

Ví dụ

ví dụ phương pháp lớp học

Để biến một phương thức thành một classmethod, hãy thêm @classmethod trước định nghĩa phương thức. Là tham số, phương thức luôn lấy lớp

Ví dụ dưới đây định nghĩa một phương thức lớp. Phương thức lớp sau đó có thể được sử dụng bởi chính lớp đó. Trong ví dụ này, phương thức lớp sử dụng tên thuộc tính lớp

1
2
3
4
5
6
7
8
class Fruit:
name = 'Fruitas'

@classmethod
def printName(cls):
print('The name is:', cls.name)

Fruit.printName()

Bạn có thể sử dụng một phương thức lớp với cả đối tượng và lớp

1
2
3
4
5
6
apple = Fruit()
berry = Fruit()

Fruit.printName()
apple.printName()
berry.printName()

Tên tham số hiện thuộc về lớp, nếu bạn thay đổi tên bằng cách sử dụng một đối tượng, nó sẽ bỏ qua điều đó. Nhưng nếu bạn làm điều đó theo lớp thì nó sẽ thay đổi, ví dụ bên dưới

1
2
3
4
5
6
7
8
9
apple.name="Apple"
Fruit.printName()
apple.printName()
berry.printName()

Fruit.name="Apple"
Fruit.printName()
apple.printName()
berry.printName()

viết thay thế

Thường thì ký hiệu Pythonic được sử dụng, nhưng điều này không bắt buộc
Bạn cũng có thể sử dụng một classmethod như thế này

1
2
3
4
5
6
7
8
class Fruit:
name = 'Fruitas'

def printName(cls):
print('The name is:', cls.name)

Fruit.printAge = classmethod(Fruit.printName)
Fruit.printAge()

classmethod vs staticmethod

Giống như một phương thức tĩnh, một phương thức lớp không cần một đối tượng được khởi tạo

Một phương thức lớp khác với một phương thức tĩnh ở chỗ một phương thức tĩnh không biết về chính lớp đó. Trong một phương thức lớp, tham số luôn là chính lớp đó

một phương thức tĩnh không biết gì về lớp hoặc thể hiện. Bạn cũng có thể sử dụng một cuộc gọi chức năng

một phương thức lớp nhận lớp khi phương thức được gọi. Nó biết về các thuộc tính và phương thức của lớp

Nếu bạn phát triển sự hiểu biết trực quan về sự khác biệt của chúng, bạn sẽ có thể viết Python hướng đối tượng để truyền đạt ý định rõ ràng hơn và sẽ dễ bảo trì hơn trong thời gian dài

Tiền thưởng miễn phí. Nhấp vào đây để có quyền truy cập vào Bảng cheat Python OOP miễn phí chỉ cho bạn các hướng dẫn, video và sách hay nhất để tìm hiểu thêm về Lập trình hướng đối tượng với Python

Các phương thức sơ thẩm, lớp và tĩnh - Tổng quan

Hãy bắt đầu bằng cách viết một lớp (Python 3) chứa các ví dụ đơn giản cho cả ba loại phương thức

________số 8_______

GHI CHÚ. Đối với người dùng Python 2. Các trình trang trí

>>> obj = MyClass()
>>> obj.method()
('instance method called', )
4 và
>>> obj = MyClass()
>>> obj.method()
('instance method called', )
5 có sẵn kể từ Python 2. 4 và ví dụ này sẽ hoạt động như. Thay vì sử dụng khai báo
>>> obj = MyClass()
>>> obj.method()
('instance method called', )
6 đơn giản, bạn có thể chọn khai báo một lớp kiểu mới kế thừa từ
>>> obj = MyClass()
>>> obj.method()
('instance method called', )
7 với cú pháp
>>> obj = MyClass()
>>> obj.method()
('instance method called', )
8. Khác hơn là bạn tốt để đi

Loại bỏ các quảng cáo

Phương thức sơ thẩm

Phương thức đầu tiên trên

>>> obj = MyClass()
>>> obj.method()
('instance method called', )
9, được gọi là
>>> MyClass.method(obj)
('instance method called', )
0, là một phương thức thể hiện thông thường. Đó là loại phương thức cơ bản, không rườm rà mà bạn sẽ sử dụng hầu hết thời gian. Bạn có thể thấy phương thức nhận một tham số,
>>> MyClass.method(obj)
('instance method called', )
1, trỏ đến một thể hiện của
>>> obj = MyClass()
>>> obj.method()
('instance method called', )
9 khi phương thức được gọi (nhưng tất nhiên các phương thức thể hiện có thể chấp nhận nhiều hơn một tham số)

Thông qua tham số

>>> MyClass.method(obj)
('instance method called', )
1, các phương thức thể hiện có thể tự do truy cập các thuộc tính và các phương thức khác trên cùng một đối tượng. Điều này mang lại cho họ rất nhiều sức mạnh khi sửa đổi trạng thái của một đối tượng

Không chỉ có thể sửa đổi trạng thái đối tượng, các phương thức thể hiện còn có thể truy cập chính lớp đó thông qua thuộc tính

>>> MyClass.method(obj)
('instance method called', )
4. Điều này có nghĩa là các phương thức thể hiện cũng có thể sửa đổi trạng thái lớp

phương pháp lớp

Hãy so sánh điều đó với phương pháp thứ hai,

>>> MyClass.method(obj)
('instance method called', )
5. Tôi đã đánh dấu phương thức này bằng một công cụ trang trí để đánh dấu nó là một phương thức của lớp

Thay vì chấp nhận một tham số

>>> MyClass.method(obj)
('instance method called', )
1, các phương thức lớp lấy một tham số
>>> MyClass.method(obj)
('instance method called', )
8 trỏ đến lớp—chứ không phải thể hiện của đối tượng—khi phương thức được gọi

Bởi vì phương thức lớp chỉ có quyền truy cập vào đối số

>>> MyClass.method(obj)
('instance method called', )
8 này, nên nó không thể sửa đổi trạng thái đối tượng. Điều đó sẽ yêu cầu quyền truy cập vào
>>> MyClass.method(obj)
('instance method called', )
1. Tuy nhiên, các phương thức lớp vẫn có thể sửa đổi trạng thái lớp áp dụng trên tất cả các phiên bản của lớp

Phương thức tĩnh

Phương thức thứ ba,

>>> obj.classmethod()
('class method called', )
1 được đánh dấu bằng một công cụ trang trí để đánh dấu nó là một phương thức tĩnh

Loại phương thức này không nhận tham số

>>> MyClass.method(obj)
('instance method called', )
1 cũng như tham số
>>> MyClass.method(obj)
('instance method called', )
8 (nhưng tất nhiên có thể chấp nhận một số tùy ý các tham số khác)

Do đó, một phương thức tĩnh không thể sửa đổi trạng thái đối tượng cũng như trạng thái lớp. Các phương thức tĩnh bị hạn chế về loại dữ liệu mà chúng có thể truy cập - và chúng chủ yếu là một cách để tạo không gian tên cho các phương thức của bạn

Hãy xem chúng hoạt động

Tôi biết cuộc thảo luận này đã khá lý thuyết cho đến thời điểm này. Và tôi tin rằng điều quan trọng là bạn phải phát triển sự hiểu biết trực quan về sự khác biệt của các loại phương pháp này trong thực tế. Bây giờ chúng ta sẽ đi qua một số ví dụ cụ thể

Chúng ta hãy xem các phương thức này hoạt động như thế nào khi chúng ta gọi chúng. Chúng ta sẽ bắt đầu bằng cách tạo một thể hiện của lớp và sau đó gọi ba phương thức khác nhau trên đó

>>> obj = MyClass()
>>> obj.method()
('instance method called', )
9 được thiết lập theo cách mà mỗi phương thức triển khai trả về một bộ chứa thông tin để chúng tôi theo dõi những gì đang diễn ra — và phần nào của lớp hoặc đối tượng mà phương thức có thể truy cập

Đây là những gì xảy ra khi chúng ta gọi một phương thức thể hiện

>>>

>>> obj = MyClass()
>>> obj.method()
('instance method called', )

Điều này xác nhận rằng

>>> MyClass.method(obj)
('instance method called', )
0 (phương thức thể hiện) có quyền truy cập vào thể hiện đối tượng (được in dưới dạng
>>> obj.classmethod()
('class method called', )
7) thông qua đối số
>>> MyClass.method(obj)
('instance method called', )
1

Khi phương thức được gọi, Python sẽ thay thế đối số

>>> MyClass.method(obj)
('instance method called', )
1 bằng đối tượng thể hiện,
>>> obj.staticmethod()
'static method called'
0. Chúng ta có thể bỏ qua đường cú pháp của cú pháp gọi dấu chấm (
>>> obj.staticmethod()
'static method called'
1) và chuyển đối tượng thể hiện theo cách thủ công để nhận được kết quả tương tự

>>>

>>> MyClass.method(obj)
('instance method called', )

Bạn có đoán được điều gì sẽ xảy ra nếu bạn cố gắng gọi phương thức mà không tạo một thể hiện trước không?

Nhân tiện, các phương thức thể hiện cũng có thể truy cập chính lớp đó thông qua thuộc tính

>>> MyClass.method(obj)
('instance method called', )
4. Điều này làm cho các phương thức cá thể trở nên mạnh mẽ về mặt hạn chế truy cập - chúng có thể sửa đổi trạng thái trên cá thể đối tượng và trên chính lớp đó

Hãy thử phương thức lớp tiếp theo

>>>

>>> obj.classmethod()
('class method called', )

Việc gọi

>>> obj.staticmethod()
'static method called'
3 cho chúng ta thấy rằng nó không có quyền truy cập vào đối tượng
>>> obj.classmethod()
('class method called', )
7 mà chỉ truy cập vào đối tượng
>>> obj.staticmethod()
'static method called'
5, đại diện cho chính lớp đó (mọi thứ trong Python đều là một đối tượng, ngay cả bản thân các lớp)

Lưu ý cách Python tự động chuyển lớp làm đối số đầu tiên cho hàm khi chúng ta gọi

>>> obj.staticmethod()
'static method called'
6. Gọi một phương thức trong Python thông qua cú pháp dấu chấm sẽ kích hoạt hành vi này. Tham số
>>> MyClass.method(obj)
('instance method called', )
1 trên các phương thức cá thể hoạt động theo cùng một cách

Xin lưu ý rằng việc đặt tên các tham số này là

>>> MyClass.method(obj)
('instance method called', )
1 và
>>> MyClass.method(obj)
('instance method called', )
8 chỉ là một quy ước. Bạn có thể dễ dàng đặt tên cho chúng là
>>> MyClass.classmethod()
('class method called', )

>>> MyClass.staticmethod()
'static method called'

>>> MyClass.method()
TypeError: unbound method method() must
    be called with MyClass instance as first
    argument (got nothing instead)
0 và
>>> MyClass.classmethod()
('class method called', )

>>> MyClass.staticmethod()
'static method called'

>>> MyClass.method()
TypeError: unbound method method() must
    be called with MyClass instance as first
    argument (got nothing instead)
1 và nhận được kết quả tương tự. Tất cả những gì quan trọng là chúng được đặt ở vị trí đầu tiên trong danh sách tham số cho phương thức

Đã đến lúc gọi phương thức tĩnh ngay bây giờ

>>>

>>> obj.staticmethod()
'static method called'

Bạn có thấy cách chúng tôi gọi

>>> MyClass.classmethod()
('class method called', )

>>> MyClass.staticmethod()
'static method called'

>>> MyClass.method()
TypeError: unbound method method() must
    be called with MyClass instance as first
    argument (got nothing instead)
2 trên đối tượng và có thể thực hiện thành công không?

Đằng sau hậu trường Python chỉ đơn giản thực thi các hạn chế truy cập bằng cách không chuyển vào đối số

>>> MyClass.method(obj)
('instance method called', )
1 hoặc
>>> MyClass.method(obj)
('instance method called', )
8 khi một phương thức tĩnh được gọi bằng cú pháp dấu chấm

Điều này xác nhận rằng các phương thức tĩnh không thể truy cập trạng thái đối tượng cũng như trạng thái lớp. Chúng hoạt động giống như các hàm thông thường nhưng thuộc về không gian tên của lớp (và của mọi cá thể)

Bây giờ, hãy xem điều gì sẽ xảy ra khi chúng ta cố gắng gọi các phương thức này trên chính lớp đó - mà không tạo trước một thể hiện đối tượng

>>>_______ 46 _______

>>> MyClass.classmethod()
('class method called', )

>>> MyClass.staticmethod()
'static method called'

>>> MyClass.method()
TypeError: unbound method method() must
    be called with MyClass instance as first
    argument (got nothing instead)

Chúng tôi đã có thể gọi

>>> obj.staticmethod()
'static method called'
3 và
>>> MyClass.classmethod()
('class method called', )

>>> MyClass.staticmethod()
'static method called'

>>> MyClass.method()
TypeError: unbound method method() must
    be called with MyClass instance as first
    argument (got nothing instead)
2 tốt, nhưng cố gắng gọi phương thức thể hiện
>>> MyClass.classmethod()
('class method called', )

>>> MyClass.staticmethod()
'static method called'

>>> MyClass.method()
TypeError: unbound method method() must
    be called with MyClass instance as first
    argument (got nothing instead)
7 không thành công với một
>>> MyClass.classmethod()
('class method called', )

>>> MyClass.staticmethod()
'static method called'

>>> MyClass.method()
TypeError: unbound method method() must
    be called with MyClass instance as first
    argument (got nothing instead)
8

Và điều này được mong đợi — lần này chúng ta không tạo một thể hiện đối tượng và thử gọi một hàm thể hiện trực tiếp trên chính bản thiết kế của lớp. Điều này có nghĩa là không có cách nào để Python đưa vào đối số

>>> MyClass.method(obj)
('instance method called', )
1 và do đó lệnh gọi không thành công

Điều này sẽ làm cho sự khác biệt giữa ba loại phương thức này rõ ràng hơn một chút. Nhưng tôi sẽ không để nó ở đó. Trong hai phần tiếp theo, tôi sẽ xem xét hai ví dụ thực tế hơn một chút về thời điểm sử dụng các loại phương thức đặc biệt này

Tôi sẽ dựa trên các ví dụ của mình xung quanh lớp

class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    def __repr__(self):
        return f'Pizza({self.ingredients!r})'
0 cơ bản này

class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    def __repr__(self):
        return f'Pizza({self.ingredients!r})'

>>>_______ 60 _______

>>> Pizza(['cheese', 'tomatoes'])
Pizza(['cheese', 'tomatoes'])

Ghi chú. Ví dụ về mã này và những mã tiếp theo trong hướng dẫn sử dụng Python 3. 6 chuỗi f để xây dựng chuỗi được trả về bởi

class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    def __repr__(self):
        return f'Pizza({self.ingredients!r})'
1. Trên Python 2 và các phiên bản Python 3 trước 3. 6, bạn sẽ sử dụng một biểu thức định dạng chuỗi khác, chẳng hạn

def __repr__(self):
    return 'Pizza(%r)' % self.ingredients

Loại bỏ các quảng cáo

Nhà Máy Pizza Ngon Với >>> obj = MyClass() >>> obj.method() ('instance method called', ) 5

Nếu bạn đã từng tiếp xúc với pizza trong thế giới thực, bạn sẽ biết rằng có rất nhiều biến thể ngon miệng

Pizza(['mozzarella', 'tomatoes'])
Pizza(['mozzarella', 'tomatoes', 'ham', 'mushrooms'])
Pizza(['mozzarella'] * 4)

Người Ý đã tìm ra cách phân loại pizza của họ từ nhiều thế kỷ trước, và vì vậy những loại pizza thơm ngon này đều có tên riêng. Chúng tôi sẽ làm tốt để tận dụng lợi thế đó và cung cấp cho người dùng lớp

class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    def __repr__(self):
        return f'Pizza({self.ingredients!r})'
0 của chúng tôi một giao diện tốt hơn để tạo các đối tượng bánh pizza mà họ khao khát

Một cách hay và rõ ràng để làm điều đó là sử dụng các phương thức lớp làm hàm xuất xưởng cho các loại pizza khác nhau mà chúng ta có thể tạo

>>> obj = MyClass()
>>> obj.method()
('instance method called', )
0

Lưu ý cách tôi đang sử dụng đối số

>>> MyClass.method(obj)
('instance method called', )
8 trong các phương thức xuất xưởng của
class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    def __repr__(self):
        return f'Pizza({self.ingredients!r})'
5 và
class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    def __repr__(self):
        return f'Pizza({self.ingredients!r})'
6 thay vì gọi trực tiếp hàm tạo
class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    def __repr__(self):
        return f'Pizza({self.ingredients!r})'
0

Đây là mẹo bạn có thể sử dụng để tuân theo nguyên tắc Không lặp lại chính mình (DRY). Nếu chúng ta quyết định đổi tên lớp này vào một thời điểm nào đó, chúng ta sẽ không phải nhớ việc cập nhật tên hàm tạo trong tất cả các hàm của nhà máy classmethod

Bây giờ, chúng ta có thể làm gì với các phương thức xuất xưởng này?

>>>

>>> obj = MyClass()
>>> obj.method()
('instance method called', )
1

Như bạn có thể thấy, chúng ta có thể sử dụng các hàm xuất xưởng để tạo các đối tượng

class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    def __repr__(self):
        return f'Pizza({self.ingredients!r})'
0 mới được định cấu hình theo cách chúng ta muốn. Tất cả đều sử dụng cùng một hàm tạo
class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    def __repr__(self):
        return f'Pizza({self.ingredients!r})'
9 trong nội bộ và chỉ cung cấp một lối tắt để ghi nhớ tất cả các thành phần khác nhau

Một cách khác để xem xét việc sử dụng các phương thức lớp này là chúng cho phép bạn định nghĩa các hàm tạo thay thế cho các lớp của bạn

Python chỉ cho phép một phương thức

class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    def __repr__(self):
        return f'Pizza({self.ingredients!r})'
9 trên mỗi lớp. Sử dụng các phương thức của lớp, có thể thêm bao nhiêu hàm tạo thay thế nếu cần. Điều này có thể làm cho giao diện cho các lớp của bạn tự ghi lại (ở một mức độ nhất định) và đơn giản hóa việc sử dụng chúng

Khi nào nên sử dụng các phương thức tĩnh

Khó hơn một chút để đưa ra một ví dụ hay ở đây. Nhưng nói cho bạn biết, tôi sẽ tiếp tục kéo dài sự tương tự của chiếc bánh pizza ngày càng mỏng hơn… (yum. )

Đây là những gì tôi nghĩ ra

>>> obj = MyClass()
>>> obj.method()
('instance method called', )
2

Bây giờ tôi đã thay đổi những gì ở đây?

Tôi cũng đã thêm một phương thức ví dụ

>>> Pizza(['cheese', 'tomatoes'])
Pizza(['cheese', 'tomatoes'])
3 để tính toán và trả về diện tích của chiếc bánh pizza (đây cũng là một ứng cử viên sáng giá cho một phương thức
>>> Pizza(['cheese', 'tomatoes'])
Pizza(['cheese', 'tomatoes'])
4 — nhưng này, đây chỉ là một ví dụ về đồ chơi thôi)

Thay vì tính diện tích trực tiếp trong phạm vi

>>> Pizza(['cheese', 'tomatoes'])
Pizza(['cheese', 'tomatoes'])
3, sử dụng công thức diện tích hình tròn nổi tiếng, tôi đã tính diện tích đó theo một phương pháp tĩnh riêng biệt của
>>> Pizza(['cheese', 'tomatoes'])
Pizza(['cheese', 'tomatoes'])
6

Hãy thử nó ra

>>> ____9_______3

Chắc chắn, đây là một ví dụ hơi đơn giản, nhưng nó sẽ giúp giải thích một số lợi ích mà các phương thức tĩnh mang lại.

Như chúng ta đã biết, các phương thức tĩnh không thể truy cập lớp hoặc trạng thái cá thể vì chúng không nhận đối số

>>> MyClass.method(obj)
('instance method called', )
8 hoặc
>>> MyClass.method(obj)
('instance method called', )
1. Đó là một hạn chế lớn — nhưng đó cũng là một tín hiệu tuyệt vời cho thấy rằng một phương pháp cụ thể độc lập với mọi thứ khác xung quanh nó

Trong ví dụ trên, rõ ràng là

>>> Pizza(['cheese', 'tomatoes'])
Pizza(['cheese', 'tomatoes'])
6 không thể sửa đổi lớp hoặc thể hiện của lớp theo bất kỳ cách nào. (Chắc chắn rồi, bạn luôn có thể giải quyết vấn đề đó bằng một biến toàn cục nhưng đó không phải là vấn đề ở đây. )

Bây giờ, tại sao điều đó lại hữu ích?

Gắn cờ một phương thức là một phương thức tĩnh không chỉ là một gợi ý rằng một phương thức sẽ không sửa đổi trạng thái lớp hoặc thể hiện - hạn chế này cũng được thực thi bởi thời gian chạy Python

Các kỹ thuật như vậy cho phép bạn giao tiếp rõ ràng về các phần của kiến ​​trúc lớp của bạn để công việc phát triển mới được hướng dẫn diễn ra một cách tự nhiên trong các ranh giới đã đặt này. Tất nhiên, nó sẽ đủ dễ dàng để thách thức những hạn chế này. Nhưng trên thực tế, chúng thường giúp tránh những sửa đổi ngẫu nhiên đi ngược lại thiết kế ban đầu

Nói cách khác, sử dụng các phương thức tĩnh và phương thức lớp là những cách để truyền đạt ý định của nhà phát triển trong khi thực thi ý định đó đủ để tránh hầu hết các sai lầm và lỗi có thể phá vỡ thiết kế

Được áp dụng một cách tiết kiệm và khi nó hợp lý, việc viết một số phương thức của bạn theo cách đó có thể mang lại lợi ích về bảo trì và khiến các nhà phát triển khác ít có khả năng sử dụng lớp của bạn không chính xác

Các phương thức tĩnh cũng có lợi ích khi viết mã kiểm tra

Bởi vì phương thức

>>> Pizza(['cheese', 'tomatoes'])
Pizza(['cheese', 'tomatoes'])
6 hoàn toàn độc lập với phần còn lại của lớp nên việc kiểm tra sẽ dễ dàng hơn nhiều

Chúng ta không phải lo lắng về việc thiết lập một thể hiện lớp hoàn chỉnh trước khi có thể kiểm tra phương thức trong một bài kiểm tra đơn vị. Chúng ta có thể bắn đi giống như chúng ta sẽ thử nghiệm một chức năng thông thường. Một lần nữa, điều này làm cho việc bảo trì trong tương lai dễ dàng hơn

Loại bỏ các quảng cáo

Chìa khóa rút ra

  • Các phương thức sơ thẩm cần một thể hiện của lớp và có thể truy cập thể hiện đó thông qua
    >>> MyClass.method(obj)
    ('instance method called', )
    
    1
  • Các phương thức của lớp không cần một thể hiện của lớp. Họ không thể truy cập vào thể hiện (
    >>> MyClass.method(obj)
    ('instance method called', )
    
    1) nhưng họ có quyền truy cập vào chính lớp thông qua
    >>> MyClass.method(obj)
    ('instance method called', )
    
    8
  • Các phương thức tĩnh không có quyền truy cập vào
    >>> MyClass.method(obj)
    ('instance method called', )
    
    8 hoặc
    >>> MyClass.method(obj)
    ('instance method called', )
    
    1. Chúng hoạt động giống như các hàm thông thường nhưng thuộc về không gian tên của lớp
  • Các phương thức lớp và tĩnh giao tiếp và (ở một mức độ nhất định) thực thi ý định của nhà phát triển về thiết kế lớp. Điều này có thể có lợi ích bảo trì

Đánh dấu là đã hoàn thành

Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Các loại phương thức OOP trong Python. @classmethod so với @staticmethod so với Phương thức sơ thẩm

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Làm thế nào để bạn truy cập một chức năng lớp trong python?

Gửi cho tôi thủ thuật Python »

Giới thiệu về Dan Bader

Làm thế nào để bạn truy cập một chức năng lớp trong python?
Làm thế nào để bạn truy cập một chức năng lớp trong python?

Dan Bader là chủ sở hữu và tổng biên tập của Real Python và là nhà phát triển chính của realpython. nền tảng học tập com. Dan đã viết mã hơn 20 năm và có bằng thạc sĩ về khoa học máy tính

» Thông tin thêm về Đan


Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Làm thế nào để bạn truy cập một chức năng lớp trong python?

Aldren

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Chuyên gia Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi


Tìm kiếm một cuộc trò chuyện thời gian thực? . Python hạnh phúc

tiếp tục học

Danh mục hướng dẫn liên quan. trăn trung gian

Khóa học video được đề xuất. Các loại phương thức OOP trong Python. @classmethod vs @staticmethod vs Phương thức sơ thẩm