如何解决什么是将 __init__ 分离为子方法的干净方法,同时不会获得“在 __init__ 之外定义的实例属性 _”
考虑
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 举报,一经查实,本站将立刻删除。