您好我刚开始使用Python,我目前正在为移动设备开发UI测试应用程序,我必须处理自定义呈现的软键盘。
Button.py
class Button(): def __init__(self, name, x, y, x2=None, y2=None): self.name = name self.x = x self.y = y self.x2 = x2 self.y2 = y2
KeyboardKey.py
import Button class KeyboardKey(Button): def __init__(self, name, x, y): super(self.__class__, self).__init__(name, x, y)
这是我的错误:
Traceback (most recent call last): File "/home/thomas/.../KeyboardKey.py", line 2, in class KeyboardKey(Button): TypeError: Error when calling the metaclass bases module.__init__() takes at most 2 arguments (3 given)
答案 0 :(得分:4)
您在代码中执行的方式是从模块Button
继承,而不是从类继承。您应该继承类Button.Button
。
为了将来避免这种情况,我强烈建议使用小写和大写类来命名模块。因此,更好的命名是:
import button
class KeyboardKey(button.Button):
def __init__(self, name, x, y):
super(self.__class__, self).__init__(name, x, y)
python中的模块是普通对象(类型为types.ModuleType
),可以继承,并且具有__init__
方法:
>>> import base64
>>> base64.__init__
<method-wrapper '__init__' of module object at 0x00AB5630>
见用法:
>>> base64.__init__('modname', 'docs here')
>>> base64.__doc__
'docs here'
>>> base64.__name__
'modname'