Python getattr和多个类

Python getattr和多个类,python,python-2.7,Python,Python 2.7,大家好,我有两个类A和B,我想从B中获取一个方法用于A 我的代码大致如下: class A(object): __init__(self, args): 'blah' def func2(self, args): #method = B.func1(args) # method = getattr(B, 'func1') class B(object): __init__(self): 'do stu

大家好,我有两个类A和B,我想从B中获取一个方法用于A

我的代码大致如下:

class A(object):
    __init__(self, args):
         'blah'

    def func2(self, args):
        #method = B.func1(args)
        # method = getattr(B, 'func1')


class B(object):
    __init__(self):
        'do stuff'


    def func1(self, args):
        'Do stuff here'
        return
有没有一种方法可以在不删除func1中的self属性的情况下将func1放入

这两个方法调用对我都不起作用,而且我一直得到一个类型错误

TypeError: unbound method func1 must be called with B instance as
first argument (got NoneType instance instead)
编辑:找到我的解决方案

我找到了问题的答案。当我将值从B传递给A时,我还需要将实例传递给B。所以在我的初始阶段

class A(object):
    __init__( args, B_arg):
B班呢

class B(object):


    def passattributes():
         c = A( args, self )

我想既然你想做你想做的事情,那么在你的例子中,合适的做法是将B.func1定义为一个类方法,因为你不希望它需要一个类B的实例

@classmethod
def func1(cls, args):
   'blah

您可以在A类中创建B的实例:

class A(object):
    def __init__(self):
        'blah'
         self.bInst = B()

    def func2(self, args):
        method = self.bInst.func1('func1')

class B(object):
    def __init__(self):
        'do stuff'

    def func1(self, args):
        print 'Do stuff here'
        return

aInst = A()
aInst.func2('some arg')
结果:

Do stuff here

func1
应该用作方法还是函数?为什么要这样做?fun1是一种为设备设置通道电压的方法。该函数需要被调用到channel类,该类保存GUI中每个通道的信息,以便动态交互和更改func1所属的类的电压。func1还可以作为独立驱动程序使用,需要保留在其他程序中。为什么不拆分独立部分,并在方法中重新使用该部分?