避免 if __name__ == '__main__'在Python子类中使用父类的函数运行
我有一个通用类(A),它的子类化方式很像这样:
class A:
def run(self):
...
self.do_something()
...
#abstract function
def do_something(self):
pass
class B(A):
def do_something(self):
...
子类位于单独的文件中,我通过将此代码添加到每个文件中直接运行(B 是文件中子类的名称):
if __name__ == '__main__':
B().run()
我的问题是,我是否可以避免将此代码添加到具有子类的所有文件中,因为代码中唯一更改的是正在使用的类(示例中的 B)?
I have a generic class (A) which is to be subclassed a lot like this:
class A:
def run(self):
...
self.do_something()
...
#abstract function
def do_something(self):
pass
class B(A):
def do_something(self):
...
The subclasses are in separate files that I'm running directly by adding this code to each file (B is the name of the subclass in the file):
if __name__ == '__main__':
B().run()
My question is, can I avoid having to add this code to all files with the subclasses since the only thing that changes in the code is the class being used (B in the example)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果你的Python版本足够新,你可以创建一个类装饰器。
在这种情况下,是一种间接的。
如果您在某个地方集中定义
runifmain()
并在需要的地方使用@runifmain(__name__)
,那么应该可以完成这项工作。If your python version is recent enough, you can create a class decorator.
In this case, an indirect one.
should do the job if you define
runifmain()
somewhere centrally and just use the@runifmain(__name__)
wherever it is needed.向你的主类 A 添加一个额外的函数怎么样?
在你的子类中你会少一行:
What about adding an extra function to your main class A?
In your subclass you'd have one line less: