如何在Python中向这个ZeroMQ类添加属性和函数?

如何在Python中向这个ZeroMQ类添加属性和函数?,python,class,attributes,zeromq,Python,Class,Attributes,Zeromq,所以这是可行的: class Foo(object): def __init__(self,a=1): Foo.a = a def Sna(self): print 'Yodel' F=Foo() 但是,如果我想向基类/父类添加属性和函数,该怎么办?在本例中,是来自ZeroMQ的上下文类?我不明白我所犯的错误 from zmq import Context class ZeroMQ(Context): def __init__(sel

所以这是可行的:

class Foo(object):
    def __init__(self,a=1):
        Foo.a = a

    def Sna(self):
        print 'Yodel'
F=Foo()

但是,如果我想向基类/父类添加属性和函数,该怎么办?在本例中,是来自
ZeroMQ
上下文
类?我不明白我所犯的错误

from zmq import Context

class ZeroMQ(Context):
    def __init__(self,port=None,filt=None):
        super(ZeroMQ,self).__init__(self)
        self.port = port
        self.filt = filt
这里调用
F=ZeroMQ(50000,'Yodel')
返回一个
AttributeError

/autonomy/toshi/zero_mq.pyc in __init__(self, port, filt)
     22         def __init__(self,port=None,filt=None):
     23                 super(ZeroMQ,self).__init__(self)
---> 24                 self.port = port
     25                 self.filt = filt
     26 

//anaconda/lib/python2.7/site-packages/zmq/sugar/attrsettr.pyc in __setattr__(self, key, value)
     24         except AttributeError:
     25             raise AttributeError("%s has no such option: %s" % (
---> 26                 self.__class__.__name__, upper_key)
     27             )
     28         else:

AttributeError: ZeroMQ has no such option: PORT

我觉得我错过了一些简单而明显的东西…

显然,您继承的
上下文有一个
\uuuuu setattr\uuuu
方法,可以防止您设置任意属性。你看过它的文档了吗?你到底想在这里做什么?您的类有
port
filt
成员,但是所有使用这些项的方法都将它们作为参数,而不是从类中获取(事实上,
sub
pub
应该是静态方法)。此外,
ZeroMQ.sendX
调用
self.send
-
zmq.Context
没有
send
方法,
zmq.Socket
有。“'localhost'也不是有效的端口@jonrsharpe我在这里看到了,但什么也没看到——但你说的有点道理。@Mistermiagi是的,它有一些问题。我没有太多的课堂练习。我修复了示例调用中的端口。关于
sendX
,你也是对的,我已经删掉了。希望这个问题现在能减少。