为什么在__init__之外定义一个对象变量是不受欢迎的?[重复]

问题描述 投票:15回答:1

有时我在 __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个回答
17
投票

Python允许你在任何时候添加和删除属性。 有两个问题,如果不在 __init__

  1. 你的定义并不在一个地方。
  2. 如果你在一个函数中使用它,你可能还没有定义它。

需要注意的是,你可以在以后通过定义属性来解决上述设置属性的问题。__init__ 作为:

self.dontknowyet = None      # Everyone is happy
© www.soinside.com 2019 - 2024. All rights reserved.