Ví dụ về trong python

Trong hướng dẫn này, tôi sẽ giúp làm sáng tỏ những gì phía sau các phương thức lớp, phương pháp tĩnh và phương pháp thể hiện thông thường

Nội dung chính Hiển thị

  • Ví dụ, lớp và phương thức tĩnh - tổng quan
  • Phương pháp khả thi
  • Layer method method
  • Phương pháp tĩnh
  • Hãy cùng xem họ trong hành độ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 truyền trong đố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 DOT.
  • Người Ý đã tìm ra phân loại pizza của họ từ nhiều thế kỷ trước, và vì vậy những loại pizza ngon này đều có tên riêng của họ. Chúng tôi làm rất tốt để tận hưởng ứng dụng điều đó và cung cấp cho người dùng của lớp Pizza. def __init__(bản thân, thành phần). bản thân. thành phần = thành phần def __repr__(tự). return f'Pizza({self. Thành phần. r})' 0 của tôi giao diện tốt hơn để tạo ra các đối tượng bánh pizza mà họ khao khát
  • Chìa khóa rút ra
  • Làm thế nào để bạn gọi một phương thức có thể thực hiện?
  • Làm thế nào để bạn sử dụng một phương thức có thể hiện trong Python?
  • Làm thế nào để bạn gọi một phương thức có thể hiện từ một lớp trong Python?
  • Làm thế nào để bạn gọi một biến thể hiện trong Python?

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

Ví dụ, lớp và phương thức tĩnh - tổng quan

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

class MyClass:
    def method(self):
        return 'instance method called', self

    @classmethod
    def classmethod(cls):
        return 'class method called', cls

    @staticmethod
    def staticmethod():
        return 'static method called'

Lưu ý. Đối chiếu với người dùng Python 2. The home page

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
4 và
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
5 có sẵn như Python 2. 4 and ví dụ này sẽ hoạt động như hiện tại. Thay vì sử dụng tuyên bố đơn giản
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
6, bạn có thể chọn khai báo một lớp mới kế thừa từ
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
7 với cú pháp
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
8. Ngoài ra, bạn rất tốt để đi. Đối với người dùng Python 2. Các bộ trang trí ______24 và
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
5 có sẵn kể từ Python 2. 4 và ví dụ này sẽ hoạt động như. Thay vì sử dụng một khai báo
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
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', <MyClass instance at 0x10205d190>)
7 với cú pháp
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
8. Khác hơn là bạn tốt để đi

Phương pháp khả thi

First method on

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

Thong qua tham số

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
21, các phương thức có thể tự động truy cập các thuộc tính và các phương thức khác nhau 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 thay đổi trạng thái đối tượng

Họ không chỉ có thể sửa đổi trạng thái của đối tượng, các phương thức có thể hiện cũng có thể truy cập vào chính lớp thông qua thuộc tính

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
24. Đ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

Layer method method

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
25. Tôi đã đánh dấu phương pháp này với một bộ trang trí ____25 để gắn cờ nó như một lớp phương pháp

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
21, lớp phương thức lấy tham số
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
28 trỏ đến lớp, và không thể hiện đối tượng khi phương thức được gọi

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
28 this, should it could be change the status to current object. Điều đó sẽ yêu cầu truy cập vào
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
21. Tuy nhiên, các lớp phương thức vẫn có thể sửa đổi trạng thái lớp áp dụng trên tất cả các trường hợp của lớp

Phương pháp tĩnh

Phương pháp thứ ba,

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
31 được đánh giá bằng một bộ trang trí ____24 để gắn cờ nó như một phương pháp tĩnh

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
21 hay
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
28 (nhưng tất nhiên là nó tự do chấp nhận một số lượng tùy theo các tham số khác nhau)

Do đó, một phương pháp 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ế trong những dữ liệu mà họ có thể truy cập - và chúng chủ yếu là một cách để đặt tên cho các phương thức của bạn

Hãy cùng xem họ trong hành động

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

Hãy cùng xem cách các phương pháp này hoạt động như thế nào khi chúng tôi gọi cho họ. Chúng tôi sẽ bắt đầu bằng cách tạo ra 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', <MyClass instance at 0x10205d190>)
9 được thiết lập theo cách mà mỗi phương thức phát triển khai báo trả về một bộ chứa thông tin để chúng tôi theo dõi những gì mà diễn ra - và bất kỳ phần nào của lớp hoặc đối tượng mà phương thức có thể truy cập

Ở đây, những gì xảy ra khi chúng ta gọi một phương thức có thể thực hiện. phương pháp ví dụ

>>>

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

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
20 (phương thức có thể hiện) có quyền truy cập vào đối tượng có thể hiện (được ở là
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
37) thông qua đối số
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
21

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
21 bằng phiên bản đối tượng,______230. Chúng ta có thể bỏ qua cú pháp cú pháp của cú pháp gọi dấu chấm (
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
31) và các đối tượng truyền thông có thể thực hiện theo cách thủ công để có kết quả tương tự

>>>

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
2

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
20 (phương thức có thể hiện) có quyền truy cập vào đối tượng có thể hiện (được ở là
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
37) thông qua đối số
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
21

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
21 bằng phiên bản đối tượng,______230. Chúng ta có thể bỏ qua cú pháp cú pháp của cú pháp gọi dấu chấm (
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
31) và các đối tượng truyền thông có thể thực hiện theo cách thủ công để có kết quả tương tự

Bạn có thể dự đoán đ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 ra một phương pháp có thể xảy ra trước không?

>>>

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
3

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
20 (phương thức có thể hiện) có quyền truy cập vào đối tượng có thể hiện (được ở là
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
37) thông qua đối số
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
21

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
21 bằng phiên bản đối tượng,______230. Chúng ta có thể bỏ qua cú pháp cú pháp của cú pháp gọi dấu chấm (
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
31) và các đối tượng truyền thông có thể thực hiện theo cách thủ công để có kết quả tương tự

Bạn có thể dự đoán đ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 ra một điều có thể xảy ra trước không?

Thời gian để gọi phương thức tĩnh ngay bây giờ. phương pháp tĩnh bây giờ

>>>

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
3

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
02 trên các đối tượng và có thể làm như vậy thành công không?

Đằng sau hậu trường, Python chỉ đơn giản thực hiện các giới hạn chế độ truy cập bằng cách không truyền trong các đối số

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
21 hoặc
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
28 khi một phương thức tĩnh được gọi bằng cú pháp DOT

Đ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 có thể hiện các đối tượng cũng như trạng thái lớp. Chúng hoạt động như các chức năng thông thường nhưng thuộc về lớp học (và mọi trường hợp) không gian tên

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

>>>

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

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
02 trên các đối tượng và có thể làm như vậy thành công không?

Đằng sau hậu trường, Python chỉ đơn giản thực hiện các giới hạn chế độ truy cập bằng cách không truyền trong các đối số

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
21 hoặc
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
28 khi một phương thức tĩnh được gọi bằng cú pháp DOT

Đ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 có thể hiện các đối tượng cũng như trạng thái lớp. Chúng hoạt động như các chức năng thông thường nhưng thuộc về lớp học (và mọi trường hợp) không gian tên

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
7

>>>

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
8

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
92 trên các đối tượng và có thể làm như vậy thành công không? . 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
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
71. 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.
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
1

Đằ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 truyền trong đố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 DOT.

Đ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 có thể hiện các đối tượng cũng như trạng thái lớp. Chúng hoạt động như các chức năng thông thường nhưng thuộc về lớp học (và mọi trường hợp) không gian tên

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
2

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

We are could call

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
33 và
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
02 chỉ tốt, nhưng cố gắng gọi phương thức có thể thực hiện
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
07 không thành công với
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
08.
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
0

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
21 và cuộc 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 pháp 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 qua hai ví dụ thực tế hơn một chút khi sử dụng các loại phương pháp đặc biệt này

Tôi sẽ dựa vào những ví dụ của mình xung quanh lớp xương trần này

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
70

>>>

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
1

Lưu ý. Ví dụ về mã này và các ví dụ khác trong hướng dẫn sử dụng các chuỗi Python 3. 6 F to build string đã được trả lại bởi

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
71. Trên Python 2 và các phiên bản của Python 3 trước 3. 6, bạn đã sử dụng một biểu thức định dạng chuỗi khác, ví dụ

Nhà máy pizza ngon với

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
5

Nếu bạn có bất kỳ cảm xúc nào với pizza trong thế giới thực, bạn sẽ biết rằng có nhiều biến thể ngon miệng có sẵn

Người Ý đã tìm ra phân loại pizza của họ từ nhiều thế kỷ trước, và vì vậy những loại pizza ngon này đều có tên riêng của họ. Chúng tôi làm rất tốt để tận hưởng ứng dụng điều đó và cung cấp cho người dùng của lớp Pizza. def __init__(bản thân, thành phần). bản thân. thành phần = thành phần def __repr__(tự). return f'Pizza({self. Thành phần. r})' 0 của tôi giao diện tốt hơn để tạo ra các đối tượng bánh pizza mà họ khao khát

Một cách tốt đẹp và sạch sẽ để làm điều đó là bằng cách sử dụng các lớp thức thức làm chức năng của nhà máy cho các loại bánh pizza khác nhau mà chúng ta có thể tạo ra.

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
28 trong các phương thức nhà máy
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
75 và
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
76 thay vì gọi trực tiếp vào hàm tạo
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
70.
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
2

Đây là một mẹo bạn có thể sử dụng để điều hành theo nguyên tắc không tái khởi động (không). Nếu chúng tôi quyết định thay đổi tên lớp này tại một số thời điểm, chúng tôi đã đạt được thành công, hãy nhớ cập nhật tên hàm tạo trong tất cả các chức năng của nhà máy ClassMethod

Bây giờ, chúng ta có thể làm gì với các phương pháp nhà máy này?

Như bạn có thể thấy, chúng ta có thể sử dụng các chức năng của nhà máy để tạo các đối tượng

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
70 mới được 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
>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
79 trong nội bộ và chỉ cần 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 xác định các hàm tạo thay thế cho các lớp của bạn

>>>

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
3

Python only allow an method

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
79 cho từng lớp. Sử dụng các lớp phương thức, nó có thể thêm nhiều hàm tạo thay thế khi cần thiết. Điều này có thể làm cho giao diện cho các lớp học của bạn tự ghi chép (ở mức định sẵn nhất) và đơn giản hóa việc sử dụng của chúng

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

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

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
86 can change layer or could current layer by any way any. (Chắc chắn, bạn luôn có thể làm việc xung quanh điều đó với một biến toàn cầu nhưng đó không phải là vấn đề ở đây. )

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

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

Các kỹ thuật như thế nào cho phép bạn giao rõ ràng về các phần của lớp kiến ​​trúc kiến ​​trúc của bạn để công việc phát triển mới được hướng dẫn một cách tự nhiên để xảy ra trong các ranh giới đã đặt ra này. Tất nhiên, nó sẽ đủ dễ dàng để xác định các giới hạn chế độ này. Nhưng trong thực tế, họ thường giúp tránh các thay đổi trạng thái thay đổi ngược lại vớ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 pháp Lớp là cách để truyền đạt ý định của nhà phát triển trong khi thực hiện ý định đó đủ để tránh hầu hết các lỗi và sai sót của tâm trí sẽ phá vỡ thiết kế

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

Phương pháp tĩnh cũng có lợi khi viết mã kiểm tra

By because method

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x10205d190>)
86 hoàn toàn độc lập với phần còn lại của lớp, nó dễ dàng hơn nhiều để kiểm tra

Chúng tôi không được phép lắng nghe về việc thiết lập có thể hiện lớp hoàn chỉnh trước khi chúng tôi có thể kiểm tra phương thức trong một bài kiểm tra đơn vị. Chúng ta chỉ có thể bắn đi 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 công việc bảo trì trong tương lai dễ dàng hơn

Chìa khóa rút ra

  • Các phương thức có thể hiện cần một lớp có thể hiện và có thể truy cập phiên bản thông tin qua
    >>> obj = MyClass()
    >>> obj.method()
    ('instance method called', <MyClass instance at 0x10205d190>)
    
    21
  • Phương pháp lớp không cần thiết để có thể hiện lớp. Họ có thể truy cập vào trường hợp (
    >>> obj = MyClass()
    >>> obj.method()
    ('instance method called', <MyClass instance at 0x10205d190>)
    
    21) nhưng họ có quyền truy cập vào lớp thông qua
    >>> obj = MyClass()
    >>> obj.method()
    ('instance method called', <MyClass instance at 0x10205d190>)
    
    28
  • Các phương pháp tĩnh điện lồng tiếng có quyền truy cập vào
    >>> obj = MyClass()
    >>> obj.method()
    ('instance method called', <MyClass instance at 0x10205d190>)
    
    28 hoặc
    >>> obj = MyClass()
    >>> obj.method()
    ('instance method called', <MyClass instance at 0x10205d190>)
    
    21. Chúng hoạt động như chức năng thông thường nhưng thuộc về không gian tên lớp
  • Phương pháp tĩnh và lớp giao tiếp và (ở mức định mức nhất) 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ì

Làm thế nào để bạn gọi một phương thức có thể thực hiện?

Có ba bước để tạo và gọi một phương thức có thể hiện. .

Object of Layer. Khai báo một đối tượng của lớp của bạn trong phương thức chính hoặc từ bên ngoài lớp.

Định nghĩa phương thức. Viết tiêu đề và mã cơ sở của phương thức như dưới đây.

Call method. Bất cứ khi nào bạn muốn sử dụng phương thức, hãy gọi ObjectName. methodName() ;

Làm thế nào để bạn sử dụng một phương thức có thể hiện trong Python?

Hàm python isInstance() hàm isInstance() trả về true if object are onlythuộc loại được định nghĩa chỉ, if not is false. Nếu tham số loại là một tuple, hàm này sẽ trả về true nếu đối tượng là một trong các loại trong tuple. Hàm isinstance() trả về True nếu đối tượng được chỉ định thuộc loại đã chỉ định, nếu không thì trả về False . Nếu tham số kiểu là một bộ, hàm này sẽ trả về True nếu đối tượng là một trong các kiểu trong bộ.

Làm thế nào để bạn gọi một phương thức có thể hiện từ một lớp trong Python?

lớp. method (ví dụ, args. ) Khi chúng ta gọi phương thức, python tự động thay thế bản thân bằng các đối tượng cá thể, a, và sau đó MSG được truyền qua cuộc gọi là 'Call Call'. Lưu ý rằng chúng tôi có thể chuyển đổi một số đối số của phương thức foo ()