我有一个从Apache Storm MultiLang项目继承自storm.py的python类。
我的课程如下:
import storm
class MyClassName(Storm.Bolt):
def initialize(self,conf,context):
self._conf = conf;
self._context = context
def process(self, in_tuple):
storm.ack(in_tuple)
if __name__ == '__main__':
MyClassName().run()
我将我的python文件(myfilename.py)复制到/usr/lib64/python2.7/site-package。然后我登录到python shell并执行了import myfilename
。完成没有错误。当我运行以下inspect.getmro(myfilename.MyClassName())
时,我收到以下错误:
AttributeError: 'MyClassName' object has no attribute '__bases__'
我的印象是,当我宣布我的课程并通过Storm.Bolt
时,我正在扩展Storm.Bolt
。我的问题是:
__bases__
?在CentOs7上使用Python 2.7.13。风暴版本是1.1.0
答案 0 :(得分:1)
inspect.getmro
函数希望它的参数是一个类,但是你要将它传递给一个实例。摆脱调用类的括号,你的代码应该工作:
inspect.getmro(myfilename.MyClassName) # not MyClassName()!
如果您在问题中提供的电话是一个简化示例,并且您没有直接在课程中调用getmro
的课程,则可以使用{{1}获得课程:
type