[英]python: import into class namespace
如果我有课
class TranformerTestInit(unittest.TestCase):
def __init__(self):
pass
我应该在哪里添加声明
from regional_pos_tranformer import regional_pos
这样,它仅对该类可见,而对整个模块不可见?
将其放在类范围内,例如,直接在def __init__
行上方并使用相同的缩进。 然后它将以self.regional_pos
或cls.regional_pos
(假设您将cls
绑定到TranformerTestInit
)。
虽然它不会显示在模块的dir()
中,但仍可以通过直接访问: TranformerTestInit.regional_pos
进行访问。
重要的是要记住,无论您导入什么内容,都将像在该类中实际定义的任何其他函数,类或数据结构一样对待-通过实例调用时将self
作为第一个参数进行传递。 您可以将函数包装在staticmethod
,但是在构建类时当然不能调用它们。 1因此,尽管您可以做到,但不值得付出努力。
1为避免在类创建过程中出现staticmethod
头痛,只需使您在类中的最后一件事成为可能:
class SomeThing:
from stdlib import widget
...
fancy = widget(...)
...
widget = staticmethod(widget)
仅在模块级别导入并使用下划线作为前缀更容易:
from stdlib import widget as _widget
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.