gpt4 book ai didi

python - 如何将基本脚本中的代码转换为带有实例的类?

转载 作者:行者123 更新时间:2023-12-01 08:58:00 25 4
gpt4 key购买 nike

我有一个基本的 Python 脚本,需要将其转换为类并创建该类的多个实例。

该脚本有一些函数修改的全局数据持有者。全局变量是这样的:

# a global list
list_1 = [...]
# a global dictionary
dict_1 = {...}
# a global pandas dataframe
df_1 = pd.DataFrame(...)

我有一个主函数(执行最基本的任务)和许多用于主函数在需要时调用的特定任务的辅助函数。像这样的事情:

# main function
def main_def():
global list_1, dict_1, df_1
aux_def_1 (list_1, df_1)
aux_def_2 (dict_1, df_1)

# auxiliary function 1
def aux_def_1 ()
global list_1, dict_1, df_1
...

# auxiliary function 2
def aux_def_2 ()
global list_1, dict_1, df_1
...

我在 jupyter 笔记本中使用上述脚本,如下所示:

import script as scr

scr.main_def()

scr.aux_def_1()
scr.aux_def_2()

scr.list_1
scr.dict_1
scr.df_1

现在我需要创建多个像上面这样的主要函数,并且大多数全局变量和辅助函数将保持不变。

实现此目的的一种方法是创建一个定义全局变量和辅助函数的基类,然后创建该类的实例。每个实例都有不同的主要功能。

对现有代码进行最少更改的最佳方法是什么?

编辑:是否可以按如下方式安排此事:

class BaseClass:
# BaseClass list
list_1 = [...]
# BaseClass dictionary
dict_1 = {...}
# BaseClass pandas dataframe
df_1 = pd.DataFrame(...)

# BaseClass auxiliary function 1
def aux_def_1 ()

# BaseClass auxiliary function 2
def aux_def_2 ()

class MainDef_1(BaseClass)
def __init__(self, parameter1, parameter2, parameter3):
self.parameter1 = parameter1
self.parameter2 = parameter2
self.parameter3 = parameter3

class MainDef_2(BaseClass)
def __init__(self, parameter1, parameter3, parameter4):
self.parameter1 = parameter1
self.parameter3 = parameter3
self.parameter4 = parameter4

最佳答案

这可能太简单了(或者我仍然不明白你想要做什么的细节,但似乎这种方法可行)。

class BaseClass:
list_1 = [...]
dict_1 = {...}
df_1 = pd.DataFrame(...)

def aux_def_1(self):
pass

def aux_def_2(self):
pass


class MainDef_1(BaseClass)
def __init__(self, parameter1, parameter2, parameter3):
self.parameter1 = parameter1
self.parameter2 = parameter2
self.parameter3 = parameter3

def main(self):
# whatever this version does...for example.
self.list_1 # Accesses attribute of base class.
x = self.parameter1 + 42 # Accesses attribute of this class.


class MainDef_2(BaseClass)
def __init__(self, parameter1, parameter3, parameter4):
self.parameter1 = parameter1
self.parameter3 = parameter3
self.parameter4 = parameter4

def main(self):
# whatever this version does...for example.
result = self.aux_def_2() # Use method defined in base class.
y = self.parameter4 + 13 # Accesses attribute of this class.

每个子类都定义自己的main()方法。其中所需参数可以通过 parameterN 引用以及基类的数据和方法(同样,只需在它们的名称前加上“self. ”前缀即可。

关于python - 如何将基本脚本中的代码转换为带有实例的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52671392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com