如何向python的buildin类和其他一些包类添加方法?

如何向python的buildin类和其他一些包类添加方法?,python,Python,我经常收到一个类中只有一个值的数据,比如{{127.1},或者一个只有1行x 1列的框架,我只需要obj.ix[0][0]。我的目的是为它编写一个通用函数,如下所示 我在想,也许我可以为每个类添加方法,这样当我发现越来越多的类用于这种情况时,泛型函数不会变得越来越长。它就像obj.getatom1一样,我可以提供方法来列出类,pandas.panels类 如何在python类中进行构建,如果我想在不直接编辑源代码的情况下对其他包进行构建,如何进行构建 def getatom1(obj,faile

我经常收到一个类中只有一个值的数据,比如{{127.1},或者一个只有1行x 1列的框架,我只需要obj.ix[0][0]。我的目的是为它编写一个通用函数,如下所示

我在想,也许我可以为每个类添加方法,这样当我发现越来越多的类用于这种情况时,泛型函数不会变得越来越长。它就像obj.getatom1一样,我可以提供方法来列出类,pandas.panels类

如何在python类中进行构建,如果我想在不直接编辑源代码的情况下对其他包进行构建,如何进行构建

def getatom1(obj,failedreturn=None):
    ''' Return the single element from obj and if obj is empty or not a single value wrapped in a class then return the failedreturn
        Case single element list/tuples: {1}, return 1
        Case single element double layer list/tuples: {{1}}, return 1
        Case single pandas.datapanel element: obj.ix[0].ix[0][0]
        Case single pandas.dataframe element: obj.ix[0][0]
        Case single pandas.timeseries element: obj.ix[0]
        Case ...
    '''

与向每个类添加方法不同,最简单的方法之一是使用装饰器。以下是关于装饰器的一些信息:您不能向内置类添加方法;你只能对它们进行子类化。切普纳有一个很好的观点。如果您确信您将继续向内置类中添加新方法,那么就对它们进行子类化,并从中生成所有代码。我可以包装它们。若有一种方法可以将一个方法添加到所有相关的类中,那个将是理想的。