静态方法 - 如何从另一个方法调用一个方法?

172 投票
7 回答
166226 浏览
提问于 2025-04-15 16:45

当我在一个类里有普通的方法去调用另一个方法时,我需要这样做

class test:
    def __init__(self):
        pass
    def dosomething(self):
        print "do something"
        self.dosomethingelse()
    def dosomethingelse(self):
        print "do something else"

但是当我有静态方法时,我不能这样写

self.dosomethingelse()

因为没有实例。那我在Python中要怎么做才能从同一个类的一个静态方法中调用另一个静态方法呢?

7 个回答

13

注意 - 看起来这个问题有些变化。关于如何从静态方法调用实例方法的答案是:你不能直接这样做,除非你把一个实例作为参数传进去,或者在静态方法里创建这个实例。

接下来主要是回答“如何从一个静态方法调用另一个静态方法”:

请记住,在Python中,静态方法和类方法是有区别的。静态方法没有隐含的第一个参数,而类方法的第一个参数是类本身(通常用cls来表示)。了解这一点后,下面是如何操作的:

如果是静态方法:

test.dosomethingelse()

如果是类方法:

cls.dosomethingelse()
245

在Python中,我该怎么做才能从同一个类的另一个静态方法中调用一个静态方法呢?

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()
106

class.method 应该可以正常使用。

class SomeClass:
  @classmethod
  def some_class_method(cls):
    pass

  @staticmethod
  def some_static_method():
    pass

SomeClass.some_class_method()
SomeClass.some_static_method()

撰写回答