Hướng dẫn python classmethod call another method - python classmethod gọi một phương thức khác

140

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Khi tôi có các phương thức thường xuyên để gọi một phương thức khác trong một lớp, tôi phải làm điều này

class test:
    def __init__[self]:
        pass
    def dosomething[self]:
        print "do something"
        self.dosomethingelse[]
    def dosomethingelse[self]:
        print "do something else"

Nhưng khi tôi có phương pháp tĩnh, tôi không thể viết

self.dosomethingelse[]

Bởi vì không có trường hợp. Tôi phải làm gì trong Python để gọi một phương thức tĩnh từ một phương pháp tĩnh khác của cùng một lớp?

Hỏi ngày 7 tháng 12 năm 2009 lúc 13:23Dec 7, 2009 at 13:23

4

Làm thế nào để tôi phải làm trong Python để gọi một phương thức tĩnh từ một phương thức tĩnh khác của cùng một lớp?

class Test[] :
    @staticmethod
    def static_method_to_call[]
        pass

    @staticmethod
    def another_static_method[] :
        Test.static_method_to_call[]

    @classmethod
    def another_class_method[cls] :
        cls.static_method_to_call[]

Đã trả lời ngày 5 tháng 11 năm 2010 lúc 8:08Nov 5, 2010 at 8:08

Warvariucwarvariucwarvariuc

54,8K36 Huy hiệu vàng167 Huy hiệu bạc226 Huy hiệu Đồng36 gold badges167 silver badges226 bronze badges

2

class.method nên làm việc.

class SomeClass:
  @classmethod
  def some_class_method[cls]:
    pass

  @staticmethod
  def some_static_method[]:
    pass

SomeClass.some_class_method[]
SomeClass.some_static_method[]

Pierre

11.9k6 Huy hiệu vàng41 Huy hiệu bạc62 Huy hiệu Đồng6 gold badges41 silver badges62 bronze badges

Đã trả lời ngày 7 tháng 12 năm 2009 lúc 13:26Dec 7, 2009 at 13:26

JLDUPONTJLDUPONTjldupont

90.2K56 Huy hiệu vàng196 Huy hiệu bạc313 Huy hiệu đồng56 gold badges196 silver badges313 bronze badges

4

Lưu ý - Có vẻ như câu hỏi đã thay đổi một số. Câu trả lời cho câu hỏi về cách bạn gọi một phương thức thể hiện từ phương thức tĩnh là bạn không thể không chuyển một thể hiện như một đối số hoặc khởi tạo phiên bản đó bên trong phương thức tĩnh.

Điều tiếp theo là chủ yếu là để trả lời "Làm thế nào để bạn gọi một phương thức tĩnh từ một phương thức tĩnh khác":

Hãy nhớ rằng có một sự khác biệt giữa các phương pháp tĩnh và phương pháp lớp trong Python. Một phương thức tĩnh không có đối số đầu tiên ngầm, trong khi phương thức lớp lấy lớp làm đối số đầu tiên ngầm [thường là ____10 theo quy ước]. Với ý nghĩ đó, đây là cách bạn sẽ làm điều đó:

Nếu đó là phương pháp tĩnh:

test.dosomethingelse[]

Nếu đó là phương pháp lớp:

cls.dosomethingelse[]

Đã trả lời ngày 7 tháng 12 năm 2009 lúc 13:25Dec 7, 2009 at 13:25

Jason Bakerjason BakerJason Baker

186K132 Huy hiệu vàng368 Huy hiệu bạc510 Huy hiệu Đồng132 gold badges368 silver badges510 bronze badges

5

Nếu những điều này không phụ thuộc vào lớp hoặc thể hiện, thì chỉ cần biến chúng thành một hàm.

Vì điều này có vẻ như là giải pháp rõ ràng. Tất nhiên trừ khi bạn nghĩ rằng nó sẽ cần phải được ghi đè, phân lớp, v.v ... Nếu vậy, thì các câu trả lời trước đó là đặt cược tốt nhất. Ngón tay vượt qua tôi sẽ không được đánh dấu khi chỉ cung cấp một giải pháp thay thế có thể hoặc không phù hợp với nhu cầu của ai đó;].

Vì câu trả lời đúng sẽ phụ thuộc vào trường hợp sử dụng của mã được đề cập;]

Đã trả lời ngày 30 tháng 5 năm 2017 lúc 10:01May 30, 2017 at 10:01

Ok, sự khác biệt chính giữa các phương thức lớp và phương thức tĩnh là:

  • Phương pháp lớp có bản sắc riêng, đó là lý do tại sao chúng phải được gọi từ trong một trường hợp.
  • Mặt khác, phương pháp tĩnh có thể được chia sẻ giữa nhiều trường hợp để nó phải được gọi từ bên trong lớp

marc_s

715K172 Huy hiệu vàng1315 Huy hiệu bạc1434 Huy hiệu đồng172 gold badges1315 silver badges1434 bronze badges

Đã trả lời ngày 7 tháng 12 năm 2009 lúc 15:13Dec 7, 2009 at 15:13

Ahmad Dwaikahmad DwaikAhmad Dwaik

9651 Huy hiệu vàng9 Huy hiệu bạc13 Huy hiệu đồng1 gold badge9 silver badges13 bronze badges

1

Bạn có thể gọi các phương thức phi tĩnh từ các phương thức tĩnh, nhưng bằng cách tạo một thể hiện bên trong phương thức tĩnh.

Nó sẽ hoạt động như vậy

class test2[object]:
    def __init__[self]:
        pass

    @staticmethod
    def dosomething[]:
        print "do something"
        # Creating an instance to be able to
        # call dosomethingelse[], or you
        # may use any existing instance
        a = test2[]
        a.dosomethingelse[]

    def dosomethingelse[self]:
        print "do something else"

test2.dosomething[]

Đã trả lời ngày 7 tháng 12 năm 2009 lúc 14:48Dec 7, 2009 at 14:48

Ahmad Dwaikahmad DwaikAhmad Dwaik

9651 Huy hiệu vàng9 Huy hiệu bạc13 Huy hiệu đồng1 gold badge9 silver badges13 bronze badges

2

Bạn có thể gọi các phương thức phi tĩnh từ các phương thức tĩnh, nhưng bằng cách tạo một thể hiện bên trong phương thức tĩnh.

class WithStaticMethods:
    @staticmethod
    def static1[]:
        print["This is first static"]

    @staticmethod
    def static2[]:
        # WithStaticMethods.static1[]
        __class__.static1[]
        print["This is static too"]


WithStaticMethods.static2[]

prints:

This is first static
This is static too

Nó sẽ hoạt động như vậyOct 18 at 11:22

Đã trả lời ngày 7 tháng 12 năm 2009 lúc 14:48Emil Vatai

Bạn có thể gọi

self.dosomethingelse[]
1 thay vì
self.dosomethingelse[]
2 nếu hàm được gọi của bạn nằm trong cùng một lớp với phương thức tĩnh của người gọi.1 gold badge16 silver badges15 bronze badges

Phương pháp lớp Python có thể gọi phương thức khác không?

Phương thức gọi 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 họ với toán tử DOT.we can call the method of another class by using their class name and function with dot operator.

Phương pháp tĩnh có thể gọi các phương pháp khác không?

Một phương thức tĩnh có thể truy cập các phương thức và biến tĩnh như sau: Một phương thức tĩnh chỉ có thể gọi các phương thức tĩnh khác;Nó không thể gọi một phương thức phi tĩnh.Một phương thức tĩnh có thể được gọi trực tiếp từ lớp, mà không phải tạo một thể hiện của lớp.A static method can call only other static methods; it cannot call a non-static method. A static method can be called directly from the class, without having to create an instance of the class.

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

Một phương thức tĩnh không có quyền truy cập vào các biến lớp và phiên bản vì nó không nhận được đối số đầu tiên ngầm như bản thân và CLS.Do đó, nó không thể sửa đổi trạng thái của đối tượng hoặc lớp.Phương thức lớp có thể được gọi bằng cách sử dụng className.method_name [] cũng như bằng cách sử dụng một đối tượng của lớp.using ClassName. method_name[] as well as by using an object of the class.

Làm thế nào để bạn gọi một phương thức bên trong một lớp python?

Cách gọi một phương thức thể hiện trong cùng một lớp trong Python..
lớp C:.
def f [tự]:.
print["abc"].
def g [tự]:.
bản thân.f [].
print ["def"] hàm g [] gọi hàm f [].
class_instance = c [].
class_instance.f [].

Bài Viết Liên Quan

Chủ Đề