在Python中,下面有什么区别,哪个更好?

16 浏览
0 Comments

在Python中,下面有什么区别,哪个更好?

这个问题已经有答案了

静态方法和类方法的区别是什么?

我写了这样的代码,它们都能正常工作,但是它们有什么区别?哪一个更好?

class Demo1(object):
    def __init__(self):
        self.attr = self._make_attr()
    def _make_attr(self):
        #skip...
        return attr
class Demo2(object):
    def __init__(self):
        self.attr = self._make_attr()
    @staticmethod
    def _make_attr():
        #skip...
        return attr

admin 更改状态以发布 2023年5月24日
0
0 Comments

就功能而言,@staticmethod 并不重要。它的价值在于语义 - 你告诉自己或其他编码人员,即使这个函数属于类的命名空间,它也不与任何特定的实例相关联。这种标记在重构代码或查找错误时非常有用。

0
0 Comments

如果两者都能工作,这意味着在 make_attr 内部你没有使用 self

如果代码在逻辑上依赖于实例,并且仅在当前实现中无需依赖于实例,则将其设置为常规非静态方法才有意义(但是例如它在派生自此类的类中可能依赖于实例)。

0