问题描述
考虑
class A:
def __init__():
self._n1 = "n1"
self._n2 = "n2"
self._m1 = "m1"
self._m2 = "m2"
def usage_foo(self):
self._n1 = "n1 again"
class A:
def __init__(self):
self.__init_n()
self.__init_m()
def __init_n(self):
self._n1 = "n1"
self._n2 = "n2"
def __init_m(self):
self._m1 = "m1"
self._m2 = "m2"
def usage_foo(self):
self._n1 = "n1 again"
这比第一种方式有一个很好的干净优势,但 Pycharm 哭了:
Instance attribute _n1 defined outside __init__
在self._n1 = "n1 again"
。
将 __init__
分成子方法而不触发(好的)Pycharm 封装检查器的正确方法是什么?
我想让 Pycharm(或开发人员)知道(并强制执行)__init_n
和 __init_m
是并且应该只从 __init__
调用,或者实现这种模块化的另一种方式.
显然,我可以定义 class N
和 class M
,但我试图避免这种情况。
按照@TigerhawkT3 的评论进行编辑:
如果你在里面定义了 __init_n 和 __init_m,它还会对你大喊大叫吗? init 而不是将它们定义为实例方法?那会 当然强制他们只能在
内调用class A:
def __init__(self):
def init_n():
self._n1 = "n1"
self._n2 = "n2"
def init_m():
self._m1 = "m1"
self._m2 = "m2"
init_n()
init_m()
def usage_foo(self):
self._n1 = "n1 again"
令人惊讶的是,它仍然在喊。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)