对对象中的类似函数进行分组

2024-04-23 15:45:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建包含数据框架中的数据的对象,以及许多用于导入、查询、修改和将数据导出到外部文件的函数。我这样做是因为我希望对象包含我们经常重复的预定义复杂函数。你知道吗

函数列表增长了很多,所以我希望能够以某种方式对这些函数进行分组,以便它们能够被很好地访问

目前,我将id定义为:

class myclass():
    def __init__(df):
        self.df = df
    def f1(self):
        print("Hello World")
    def f2(self,bar,foo)
        return self.df[["bar","foo"]].somefunction()
# many more functions...
        def f40():
            self.df.rename(...,inplace=True)

我是这样用的:

a = myclass(df)
a.f1()
a.f2(bar,foo)
a.f40()

但是,我想通过导入函数(I)、查询函数(q)、操作函数(m)和输出函数(o)对它进行分组,这样sintax看起来像这样

a = myclass()
a.i.f1()
a.o.f2(bar,foo)
a.m.f40()

最好的方法是什么?你知道吗

编辑:

  • 我添加了self参数和dataframe,这样更清晰
  • @切普纳我想这也行。我只是觉得将它们分组会很好,这样当您开始键入myclass.时,您将只看到[I,q,m,o],然后选择其中一个myclass.i.时,您将只看到输入组函数。你知道吗

Tags: 文件数据对象函数self框架df列表
1条回答
网友
1楼 · 发布于 2024-04-23 15:45:02

一种方法是为每组函数创建一个类,并将它们包含在主类中(一种称为class composition的技术):

class InputController:
    """Import functions"""
    ...


class QueryController:
    """Query functions"""
    ...


class ManipulationController:
    """Manipulation functions"""
    ...


class OutputController:
    """Output functions"""
    ...
    def foo(self): print("Hello World")


class MyClass:
    def __init__(self):
        self.i = InputController()
        self.q = QueryController()
        self.m = ManipulationController()
        self.o = OutputController()



...
>>> MyClass().o.foo()
Hello World!

相关问题 更多 >