如何解决 PyCharm 发出的“在 __init__ 外部定义的实例属性”警告

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

我已经编写了这个类,其中包含大量变量,我需要能够随时重置为默认值。最初,我在

__init__
中“声明”并初始化了这些变量(就像你似乎能够在Python中声明的那样),但这带来了一个问题,当我想要一个外力将这些变量设置为默认值时,我会重复三十多行代码(因为类有大约三十个变量)。

我在这里看到了另一篇文章描述了类似的问题,但接受的答案是将每个变量设置为 None,然后您可以从类中的函数访问它们,而不会出现问题。

在 C++ 中,您可以将这些变量声明为标头中的变量,然后您可以在实例化时以及调用

class_name.set_to_default()
时调用相同的函数,这一切都简单而整洁。

当然有一种方法可以在 Python 中执行相同的操作,并且每个变量都不会出错吗?比如:

 class Motor():
    def __init__(self):
        self.reset_all_values()
  
    def reset_all_values(self):
        self.speed_value = DEFAULT_SPEED_VALUE
        self.hours_value = DEFAULT_HOURS_VALUE
        # etc.

如果是这样,我怎样才能做到这一点而不让 PyCharm 对我发牢骚?

或者我只需要在代码中写得非常冗长? Python 是否与其他语言差异太大,你必须以完全不同的方式思考?

python pycharm
1个回答
1
投票

将字段定义为类主体中的注释,以告诉 PyCharm(和您的读者)您打算让这些字段存在(使用给定的类型)。

class Motor:
    speed_value: float
    hours_value: float

    def __init__(self):
        self.reset_all_values()

    def reset_all_values(self):
        self.speed_value = DEFAULT_SPEED_VALUE
        self.hours_value = DEFAULT_HOURS_VALUE
© www.soinside.com 2019 - 2024. All rights reserved.