python - Python:在另一个文件/类中分离一些实例方法的定义
问题描述
我有一堂课:
class Foo:
def __init__(self, df):
self.df = df
self.keys = []
def startJob(self):
self.first_job()
self.second_job()
self.third_job()
def first_job(self):
#do soemthing with df
def second_job(self):
#do soemthing with df
def third_job(self):
#do soemthing with df
作业列表可能会变得很小,因此我想将作业分离到第二个文件中,并且只__init__
包含startJob
在第一个文件中。我该怎么做?有没有更好的方法来实现这种分离以提高可读性?
解决方案
你可以这样做:
# jobs.py
__all__ = ["jobs"]
jobs = []
def register(job):
jobs.append(job)
return job
## WARNING: the definition order is important
@register
def first_job(self):
# ...
@register
def second_job(self):
# ...
接着:
# foo.py
from jobs import jobs
class Foo:
def __init__(self, df, jobs=jobs):
self.jobs = jobs
self.df = df
self.keys = []
def start_job(self):
for job in self.jobs:
job(self)
推荐阅读
- python - 混淆矩阵显示错误信息?
- azure-sql-database - 是否可以在 Azure SQL DB 中按用户实现行级安全性并在 ASP.Net 3.1 Web App 上访问用户特定的行集
- android - 为什么 waze deeplink 在 asynctask 中不起作用?
- plsql - 使用从数据库中选择将参数传递给 PL/SQL 过程
- webforms - c#, IIS 10, Web Forms, Forms Authentication, Bootstrap 4, Web API, Trying to Add Signalr - 在 signalr/hubs 上得到 404?
- sql - 从保存为字符串的 Android 房间数据库中获取日期/时间窗口
- php - 我想在 php 中创建 if else 但我不知道如何
- shell - 在 vim 的 shell 中编辑命令行
- mongodb - 如何在猫鼬中获取子文档群体的特定字段
- reactjs - ReactJS 中的 ScrollToRef - 隐式类型