Python getattr和多个类
大家好,我有两个类A和B,我想从B中获取一个方法用于A 我的代码大致如下: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
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还可以作为独立驱动程序使用,需要保留在其他程序中。为什么不拆分独立部分,并在方法中重新使用该部分?