微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python:如何从 StaticMethod 调用 ClassMethod

如何解决Python:如何从 StaticMethod 调用 ClassMethod

我正在开发一个已经建立的 Python 2.7 项目,需要进行一些修改,而且我对 Python 还比较陌生,这是我所做的:

我在同一个类中有两个函数一个是@staticmethod,另一个是@classmethod。我需要从 @staticmethod 内部调用 @classmethod 就像 -

class ABC(object):

    @classmethod
    def classm(self,name):
        ...
    
    
    @staticmethod
    def staticm(freq):
        ...
        ...
        classm("sample")

上面的代码不起作用,所以我将静态方法转换为类方法,然后它工作正常(在正确的地方使用'self')

有人可以解释一下我们是否可以从 staticmethod 调用 classmethod(很可能似乎我不知道语法),如果不是,是否有更好的解决方法而不进行转换?

解决方法

首先,我想说,请尽量不要在类方法中使用 self,因为社区使用 self 来传递实例,因此可能会混淆使用 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 正在打印,并且静态方法正在调用类方法来执行此操作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。