当前位置:  开发笔记 > 编程语言 > 正文

从类实例中调用classmethod作为方法是不好的形式?

如何解决《从类实例中调用classmethod作为方法是不好的形式?》经验,为你挑选了3个好方法。

防爆.

如果我有这样的事情:

class C(object):
    @classmethod
    def f(cls, x):
       return x + x

这将有效:

c = C()

c.f(2)
4

但这是不好的形式?我应该只打电话

C.f()

要么

c.__class__.f()

显然,这只有在f不与self/cls相互作用的情况下才有意义.



1> Toni Ruža..:

如果您想从实例调用类方法,则可能不需要类方法.

在这个例子中,你给出一个静态方法更合适,因为你的最后一句话(没有自我/ cls交互).

class C(object):
    @staticmethod
    def f(x):
       return x + x

这样做两者都是"好形式"

c = C()
c.f(2)

C.f(2)



2> Matt Good..:

我不记得在类之外使用这样的类方法,但是实例方法可以自己调用类方法(例如self.foo(),在哪里foo是类方法).这可以确保继承按预期方式执行,并将调用.foo()正确的子类而不是基类.



3> Trey Stout..:

这主要是看起来令人困惑.如果我正在使用你的课程并看到这一点,它会让我想知道其他的惊喜是什么,它看起来像是糟糕的设计.

有没有理由这不仅仅是一种静态方法?

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有