次のようなことをする必要があります:
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
やりたいことによっては、classmethod の方が適している場合があります。
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
ここでの違いは、2 番目の例では、クラス自体がメソッドの最初の引数として渡されることです (インスタンスが最初の引数である通常のメソッドや、追加の引数を受け取らない staticmethod とは異なります)。
それでは、実際の質問に答えてください。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'