在python中,下面有什么区别,哪个更好
这个问题在这里已经有了答案:
如果两者都工作,这意味着make_attr
里面没有使用self
。
使它成为一个常规的非静态方法只有在代码能够在逻辑上依赖于实例并且在当前实现中不依赖它的情况下才有意义(但是例如,它可以依赖于派生自该类的类中的实例)。
在功能方面,@staticmethod并不重要。 它的价值在于语义 - 你告诉自己或其他编码人员,即使这个函数属于类的名字空间,它也不会绑定到任何特定的实例。 这种标记在重构代码或查找错误时非常有用。
在任何一个中,attr都是一个局部变量,并不依赖于类中的任何东西。 结果是一样的。 将其标记为静态可以让您了解这一点,并且可以直接访问它,例如Demo2._make_attr(),而无需创建类的实例。
如果你想让它访问类变量,你可以引用它作为self.attr
。 但是如果你这样做了,那么Demo2._make_attr()就不能再是静态的了。
上一篇: in python,what is the difference below, and which is better
下一篇: Python : Difference between static methods vs class method