如何在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
,你也是对的,我已经删掉了。希望这个问题现在能减少。