getattr和多个类

时间:2013-02-28 16:59:54

标签: 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 stuff'


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

有没有办法让func1进入A而不从func1中删除self属性?

两个方法调用都没有为我工作,我一直收到类型错误

TypeError: unbound method func1 must be called with B instance as
first argument (got NoneType instance instead)

编辑:找到我的解决方案

我找到了问题的解决方案。当我将值从B传递给A时,我也需要传递我的B实例。所以在我的初学者A

class A(object):
    __init__( args, B_arg):

在B组中

class B(object):


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

2 个答案:

答案 0 :(得分:0)

我会猜测,因为你正在尝试做你想要做的事情,在你的情况下适当的做法是将B.func1定义为类方法,因为你不期望它要求B类的实例。

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

答案 1 :(得分:0)

您可以在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