Python: 如何从 StaticMethod 调用 ClassMethod
Python: How to call ClassMethod from StaticMethod
我正在开发一个已经建立的 Python 2.7 项目,需要进行一些修改,而且我对 Python 还是比较陌生,这是我所做的:
我在同一个 class 中有 2 个函数,一个是 @staticmethod,另一个是 @classmethod。我需要从 @staticmethod 内部调用 @class 方法,比如 -
class ABC(object):
@classmethod
def classm(self, name):
...
@staticmethod
def staticm(freq):
...
...
classm("sample")
上面的代码不起作用,所以我将静态方法转换为 class 方法然后它工作正常(在正确的地方使用 'self')
有人可以解释一下我们是否可以从 staticmethod 调用 class 方法(很可能我似乎不知道语法),如果不能,是否有更好的解决方法而不转换?
首先,我想说的是,请尽量不要在 class 方法中使用 self,因为社区使用 self 来传递实例,因此可能会混淆 reader 使用 cls:
class ABC:
@classmethod
def classm(cls, name):
...
您可以使用 ABC.classm("Sample")
。
示例:
class ABC():
@classmethod
def classm(cls, name):
print(name)
@staticmethod
def staticm(freq):
ABC.classm(freq)
test = ABC()
test.staticm("Vedant")
如果您 运行 这段代码,您将看到 Vedant 正在打印并且静态方法正在调用 class 方法来执行此操作。
我正在开发一个已经建立的 Python 2.7 项目,需要进行一些修改,而且我对 Python 还是比较陌生,这是我所做的:
我在同一个 class 中有 2 个函数,一个是 @staticmethod,另一个是 @classmethod。我需要从 @staticmethod 内部调用 @class 方法,比如 -
class ABC(object):
@classmethod
def classm(self, name):
...
@staticmethod
def staticm(freq):
...
...
classm("sample")
上面的代码不起作用,所以我将静态方法转换为 class 方法然后它工作正常(在正确的地方使用 'self')
有人可以解释一下我们是否可以从 staticmethod 调用 class 方法(很可能我似乎不知道语法),如果不能,是否有更好的解决方法而不转换?
首先,我想说的是,请尽量不要在 class 方法中使用 self,因为社区使用 self 来传递实例,因此可能会混淆 reader 使用 cls:
class ABC:
@classmethod
def classm(cls, name):
...
您可以使用 ABC.classm("Sample")
。
示例:
class ABC():
@classmethod
def classm(cls, name):
print(name)
@staticmethod
def staticm(freq):
ABC.classm(freq)
test = ABC()
test.staticm("Vedant")
如果您 运行 这段代码,您将看到 Vedant 正在打印并且静态方法正在调用 class 方法来执行此操作。