您需要执行以下操作:
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
根据您想做什么,类方法可能更合适:
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
这里的不同之处在于,在第二个示例中,类本身作为第一个参数传递给方法(与实例是第一个参数的常规方法或不接收任何其他参数的静态方法相反)。
现在回答你的实际问题。我敢打赌您找不到您的方法,因为您已将类 Person 放入模块 Person.py 中。
然后:
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
或者,您可能希望从模块 Person 导入类 Person:
from Person import Person
Person.call_person()
关于什么是模块和什么是类,这一切都让人有些困惑。通常,我会尽量避免给类取与它们所在的模块相同的名称。但是,这显然并没有被看不起,因为标准库中的 datetime 模块包含一个 datetime 类。
最后,值得指出的是你不需要这个简单示例的类:
# Person.py
def call_person():
print("Hello person")
现在在另一个文件中,导入它:
import Person
Person.call_person() # 'Hello person'