首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getattr和多个类

getattr和多个类
EN

Stack Overflow用户
提问于 2013-03-01 00:59:54
回答 2查看 201关注 0票数 1

大家好,我有两个类A和B,我想从B中抓取一个方法在A中使用。

我的代码大致如下:

代码语言:javascript
复制
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中删除func1属性的情况下使self进入A?

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

代码语言:javascript
复制
TypeError: unbound method func1 must be called with B instance as
first argument (got NoneType instance instead)

编辑:找到我的解决方案

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

代码语言:javascript
复制
class A(object):
    __init__( args, B_arg):

在B类中

代码语言:javascript
复制
class B(object):


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

回答 2

Stack Overflow用户

发布于 2013-03-01 01:05:40

我猜,既然您正在尝试做您想要做的事情,那么在您的情况下,适当的做法是将B.func1定义为一个类方法,因为您不希望它需要一个类B的实例。

代码语言:javascript
复制
@classmethod
def func1(cls, args):
   'blah
票数 0
EN

Stack Overflow用户

发布于 2013-03-01 01:06:19

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

代码语言:javascript
复制
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')

结果:

代码语言:javascript
复制
Do stuff here
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15141316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档