Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';组织Python类的最佳方法是什么?_Python_Class - Fatal编程技术网

什么';组织Python类的最佳方法是什么?

什么';组织Python类的最佳方法是什么?,python,class,Python,Class,我想知道用Python组织一个类的最佳方式是什么,因为在这里检查前面的问题时,我没有找到我所需要的。假设我有一门课: class A(): def __init__(self): self.data = #A pandas dataframe I get from an online API 我想组织这个类中的许多函数。所有这些函数都需要self.data中包含的数据帧作为参数 我想为每一组函数创建一个子类,但是我没有找到从子类中引用self.data的方法 我在网上发

我想知道用Python组织一个类的最佳方式是什么,因为在这里检查前面的问题时,我没有找到我所需要的。假设我有一门课:

class A():
    def __init__(self):
        self.data = #A pandas dataframe I get from an online API
我想组织这个类中的许多函数。所有这些函数都需要self.data中包含的数据帧作为参数

我想为每一组函数创建一个子类,但是我没有找到从子类中引用self.data的方法

我在网上发现,我可以在不同的模块中组织功能。但是,如何将self.data中的数据帧作为参数传递给函数?假设function1的定义如下:

def function1(self):
    print (self.data)
如果函数是在类中定义的,我可以这样做:

x = A()
x.function1()
并在不将self.data作为参数传递的情况下获取打印。如果在另一个模块中定义了一个函数,并且我在主类中导入它,而每次都不将self.data作为参数传递,那么我该如何做呢?提前谢谢

编辑: 如果我这样做:


我收到一个错误,说“A未定义”

我喜欢您为每组方法创建子类的方法。首先从存储数据的基类开始

类数据库:
定义初始化(自身,数据):
self.\u data=数据
然后写下你的不同方法组

class-GroupB(数据库):
def func_b1(自身):
返回自身数据
def func_b2(自身):
返回自身数据
类别A(数据库):
def func_a1(自身):
返回自身数据
def func_a2(自身):
返回自身数据
。。。最后将所有这些群体聚集在一起

class MyData(组A、组B):
通过
>>>d=我的数据(123)
>>>d.func_a1()
123
>>>d.func_b2()
123

我希望这能对你有所帮助。

你可以看看这个网站,看看这个网站,这是组织python代码的一个很好的资源:最好不要把数据放在类中,而是把它作为参数-
def function1(self,data):
对,你为什么要把
B
的类定义嵌套在
a
的主体中?别这样,把它移到外面去。@Lorenzo是的,你错了。我不知道你为什么这么想,但这不是真的。嵌套类只会影响命名空间,这就是为什么会出现错误。不要嵌套类,在Python中几乎没有很好的理由嵌套类
class A():
    def __init__(self):
        self.x = 1
        self.b = self.B()

    class B(A):
        def print(self):
            print(self.x)