Hướng dẫn how do you call a static method from another class in python? - 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?

You need to do something like:

class Person:
    @staticmethod
    def call_person():
        print("hello person")

# Calling static methods works on classes as well as instances of that class
Person.call_person()  # calling on class
p = Person()
p.call_person()       # calling on instance of class

Depending on what you want to do, a classmethod might be more appropriate:

class Person:
    @classmethod
    def call_person(cls):
        print("hello person", cls)

p = Person().call_person() # using classmethod on instance
Person.call_person()       # using classmethod on class

The difference here is that in the second example, the class itself is passed as the first argument to the method (as opposed to a regular method where the instance is the first argument, or a staticmethod which doesn't receive any additional arguments).

Now to answer your actual question. I'm betting that you aren't finding your method because you have put the class Person into a module Person.py.

Then:

import Person  # Person class is available as Person.Person
Person.Person.call_person() # this should work
Person.Person().call_person() # this should work as well

Alternatively, you might want to import the class Person from the module Person:

from Person import Person
Person.call_person()

This all gets a little confusing as to what is a module and what is a class. Typically, I try to avoid giving classes the same name as the module that they live in. However, this is apparently not looked down on too much as the datetime module in the standard library contains a datetime class.

Finally, it is worth pointing out that you don't need a class for this simple example:

# Person.py
def call_person():
    print("Hello person")

Now in another file, import it:

import Person
Person.call_person() # 'Hello person'

Hàm tĩnh trong Python là một phần của lớp. Chúng được sử dụng để tạo ra các phương thức tiện ích lớp. Tham chiếu lớp được sử dụng để gọi phương thức tĩnh. Bởi vì họ là thành viên của lớp, họ không thể ảnh hưởng đến trạng thái đối tượng. Một phương thức tĩnh không có khả năng truy cập vào các giá trị thuộc tính. Phương pháp tĩnh hoạt động tương tự như một hàm trong tập lệnh Python, nhưng nó nằm trong thân lớp. Một phương thức tĩnh có thể được gọi từ một tham chiếu lớp hoặc đối tượng. Chúng ta có thể gọi nó là sử dụng nếu foo () là một hàm tĩnh trong sử dụng lớp. Utils.foo () cũng như Utils (). Foo (). Các phương pháp tĩnh cho phép các phương pháp tiện ích được tách thành các mô-đun phụ. Một phương pháp tĩnh được ghép nối với một lớp chứ không phải với một thể hiện cụ thể của lớp. Do đó, phương pháp tĩnh không thể truy xuất các biến thể hiện. Các phương thức tĩnh được xác định bằng cách sử dụng công cụ trang trí @staticmethod trước định nghĩa phương thức tĩnh.

Bộ trang trí @ClassMethod thực sự là một công cụ trang trí phương pháp tích hợp được đánh giá một khi chức năng của bạn đã được khai báo. Kết quả của đánh giá đó đặt ra nghi ngờ về định nghĩa chức năng của bạn. Theo cách tương tự, một phương thức thể hiện nhận được thể hiện như một tham số đầu tiên tiềm ẩn; Một phương thức lớp có được lớp như một đối số đầu tiên ngầm. Một tham số ban đầu ngầm không được chuyển đến một phương thức tĩnh. Các phương pháp tĩnh được kết nối với lớp. Trạng thái lớp không thể được truy cập hoặc sửa đổi bằng phương pháp tĩnh. Nó trong một lớp, vì nó giải thích rõ ràng lý do tại sao phương pháp nên ở trong một lớp. Bây giờ hãy để Lôi nhìn vào một số ví dụ.

Ví dụ 1:

Phương pháp tĩnh là một phương pháp tiện ích rộng để hoàn thành một nhiệm vụ duy nhất. Các biện pháp tĩnh Python sườn có liên quan đến các biện pháp trong Java và C ++. Một phương thức tĩnh được kết nối trực tiếp với lớp chứ không phải với đối tượng của lớp. Kết quả là, chúng ta có thể đề cập đến nó bằng tên lớp của nó. Một phương pháp tĩnh không có quyền truy cập vào lớp cũng như các biến vì nó không nhận được đối số bắt đầu như CLS và Self. Không thể thay đổi trạng thái đối tượng hoặc lớp của lớp như một kết quả. ClassName.method_name () và một đối tượng của lớp có thể được sử dụng để gọi phương thức lớp.

Học sinh lớp: & NBSP; & nbsp; @staticmethod & nbsp; & nbsp; mẫu def (a): in ('bên trong phương thức tĩnh', a) student.sample (5) std = student () std.sample (5) Student:
    @staticmethod
    def sample(a):
print('Inside static method', a)
Student.sample(5)
std = Student()
std.sample(5)

Hướng dẫn how do you call a static method from another class in python? - 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?

Ở đây bạn có thể thấy kết quả được tạo ra.

Hướng dẫn how do you call a static method from another class in python? - 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?

Ví dụ 2:

Một số chương trình có thể thiết lập một phương thức tĩnh bằng cách gọi staticMethod () là một hàm mà thay vào đó là một người trang trí. Nếu bạn cần hỗ trợ các phiên bản Python trước đó, bạn chỉ nên sử dụng hàm staticMethod () để xác định các phương thức tĩnh. Nếu bạn không phải sử dụng bộ trang trí @staticmethod, hãy sử dụng bộ trang trí @staticmethod thay thế. StaticMethod () rất hữu ích trong các tình huống mà bạn tìm kiếm kết nối với một hàm từ thân lớp nhưng không ủng hộ quá trình chuyển đổi tự động sang phương thức thể hiện. Trong một ví dụ đã cho, bạn có thể thấy cách gọi một phương thức tĩnh từ một số phương thức tĩnh khác trong cùng một lớp. Chúng tôi sẽ phân biệt một phương thức tĩnh với phương thức lớp trong phần này.

Sự kiện lớp: & NBSP; & nbsp; @staticmethod & nbsp; & nbsp; def static_method_one (): in ('phương pháp tĩnh 1') & nbsp; & nbsp; @staticmethod & nbsp; & nbsp; def static_method_two (): event.static_method_one () & nbsp; & nbsp; @classmethod & nbsp; & nbsp; def class_method_one (cls): cls.static_method_two () event.class_method_one () Event :
    @staticmethod
    def static_method_One():
print('static method 1')
    @staticmethod
    def static_method_Two() :
Event.static_method_One()
    @classmethod
    def class_method_One(cls) :
cls.static_method_Two()
Event.class_method_One()

Hướng dẫn how do you call a static method from another class in python? - 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?

Đây là cách bạn có thể gọi một phương thức tĩnh.

Hướng dẫn how do you call a static method from another class in python? - 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?

Ví dụ 3:

Chúng tôi sẽ xác định một phương thức lớp và sau đó là một phương thức tĩnh trong ví dụ này. Mục đích của bộ trang trí @staticmethod là xác định phương pháp tĩnh và bộ trang trí @ClassMethod là xác định phương pháp lớp. Xem ví dụ. Hãy để tưởng tượng chúng ta muốn tạo ra một lớp học một người. Vì Python không kích hoạt quá tải phương thức như C ++ hoặc Java, chúng ta phải xác định các phương thức nhà máy bằng các phương thức lớp. Trong ví dụ dưới đây, chúng tôi sử dụng một chức năng lớp để xây dựng một đối tượng một người từ năm sinh. Để xác định xem một người có phải là người lớn hay không, chúng tôi sử dụng phương pháp tĩnh trong ví dụ dưới đây.

FromDateTimeImport Dateclass Người: & nbsp; & nbsp; def__init __ (self, your_name, your_age): & nbsp; & nbsp; & nbsp; & nbsp; self.your_name = your_name & nbsp; & nbsp; & nbsp; & nbsp; self.your_age = your_age & nbsp; & nbsp; @classmethod & nbsp; & nbsp; def frombirthear (cls, your_name, your_year): & nbsp; & nbsp; & nbsp; & nbsp; trả về cls (your_name, date.today (). Năm - your_year) & nbsp; & nbsp; @staticmethod & nbsp; & nbsp; def Isadult (your_age): & nbsp; & nbsp; & nbsp; & nbsp; Trả về your_age> 18 First_p = person ('Alex', 23) Second_p = person.frombirthear ('Alex', 1989) in (First_p.your_age) in (Second_p.your_age) in (person.isadult (22)) datetime import date
class Person:
    def __init__(self, your_name, your_age):
        self.your_name = your_name
        self.your_age = your_age
    @classmethod
    def fromBirthYear(cls, your_name, your_year):
        return cls(your_name, date.today().year - your_year)
    @staticmethod
    def isAdult(your_age):
        return your_age> 18
First_p = Person('Alex', 23)
Second_p = Person.fromBirthYear('Alex', 1989)
print (First_p.your_age)
print (Second_p.your_age)
print (Person.isAdult(22))

Hướng dẫn how do you call a static method from another class in python? - 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?

Xem kết quả dưới đây.

Hướng dẫn how do you call a static method from another class in python? - 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?

Sự khác biệt giữa phương pháp lớp và phương pháp tĩnh

Một quy trình tĩnh không liên quan đến CLS là tham số ban đầu, nhưng phương thức lớp thì có. Một phương thức lớp cũng có thể truy cập trạng thái lớp và thay đổi nó, nhưng một phương thức tĩnh thì không. Phương pháp tĩnh thường không có ý tưởng về trạng thái của lớp. Chúng là các phương thức tiện ích lấy các tham số và thực hiện các hoạt động trên chúng. Phương pháp lớp nên coi lớp là một tham số. Trong Python, bộ trang trí @staticmethod thường được sử dụng để phát triển phương pháp tĩnh, trong khi đó, bộ trang trí @ClassMethod được sử dụng rộng rãi để xây dựng phương pháp lớp.

Conclusion:

Hướng dẫn này bao gồm những điều cơ bản của 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. Một thể hiện lớp không bắt buộc cho các phương thức lớp. Họ có thể đến trường hợp, nhưng họ có thể đến lớp (CLS). CLS và bản thân không thể truy cập được vào các phương thức tĩnh. Ngoài ra, chúng hoạt động theo cách tương tự như các chức năng thông thường, nhưng chúng ở trong không gian tên của lớp. Phương pháp tĩnh và lớp trao đổi thông tin và (ở một mức độ nào đó) thực thi ý định của nhà phát triển về thiết kế lớp. Điều này thậm chí còn có khả năng trở nên thuận lợi về mặt bảo trì. Bạn có thể tạo ra Python hướng đối tượng, truyền đạt mục tiêu của nó rõ ràng hơn và dễ dàng duy trì trong dài hạn nếu bạn có được kiến ​​thức trực quan về sự khác biệt của họ.

Thông tin về các Tác giả

Xin chào, tôi là một nhà văn tự do và thường viết cho Linux và các nội dung liên quan đến công nghệ khác

Chúng ta có thể gọi phương thức tĩnh từ phương pháp không tĩnh Python không?

Vì vậy, câu trả lời là có, bạn có thể cal phương thức không tĩnh từ các phương thức tĩnh.Nhưng chỉ khi bạn có thể vượt qua trong một trường hợp như tham số đầu tiên.yes, you can cal non-static methods from static methods. But only if you can pass in an instance as first parameter.

Bạn có thể gọi một phương thức từ một lớp khác trong Python 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.Sau đó, chúng ta có thể gọi Phương thức_A từ lớp B theo cách sau: Lớp A: Phương thức_A (self): {} Lớp B: meather_b (self): A.we can call the method of another class by using their class name and function with dot operator. then we can call method_A from class B by following way: class A: method_A(self): {} class B: method_B(self): A.