【问题标题】:why is defining an object variable outside of __init__ frowned upon? [duplicate]为什么不赞成在 __init__ 之外定义对象变量? [复制]
【发布时间】:2023-03-13 16:40:02
【问题描述】:

我有时会在__init__ 之外定义一个对象变量。 plint 和我的 IDE (PyCharm) 抱怨。

class MyClass():
    def __init__(self):
        self.nicevariable = 1   # everyone is happy

    def amethod(self):
        self.uglyvariable = 2   # everyone complains

plint 输出:

W:  6, 8: Attribute 'uglyvariable' defined outside __init__ (attribute-defined-outside-init)

为什么这是不正确的做法?

【问题讨论】:

标签: python


【解决方案1】:

Python 允许您随时添加和删除属性。在__init__不做有两个问题

  1. 您的定义并非集中在一处
  2. 如果你在函数中使用它,你可能还没有定义它

请注意,您可以通过将__init__ 中的属性定义为:

self.dontknowyet = None      # Everyone is happy

【讨论】:

  • 所以 JSLint/JSHint 希望你将所有变量声明移动到各自函数的开头并没有什么不同?
  • (1) 与您有关,对尝试使用您的代码的每个人来说更重要。善良,编写漂亮的代码并将定义放在一个地方
  • 重要的一点是它让你的代码更容易推理。通常,当我们想到对象时,我们指的是具有给定属性集的事物。必须记住其中一些属性出现的情况会导致更多潜在的错误和更难处理的事情。
猜你喜欢
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 2019-12-02
  • 2021-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多