关于继承:python 类继承错误

Simple Inherit from class in Python throws error

嗨,我刚开始使用python,我目前正在为移动设备开发一个UI测试应用程序,我必须使用一个定制的渲染软键盘。

钮扣

1
2
3
4
5
6
7
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

键盘键

1
2
3
4
import Button
class KeyboardKey(Button):
    def __init__(self, name, x, y):
        super(self.__class__, self).__init__(name, x, y)

这是我的错误:

1
2
3
4
5
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)

您在代码中的操作方式是从模块Button继承,而不是从类继承。您应该继承类Button.Button

为了避免将来出现这种情况,我强烈建议用小写字母命名模块,并将类大写。因此,更好的命名方法是:

1
2
3
4
import button
class KeyboardKey(button.Button):
    def __init__(self, name, x, y):
        super(self.__class__, self).__init__(name, x, y)

python中的模块是普通对象(types.ModuleType类型),可以继承,并有__init__方法:

1
2
3
>>> import base64
>>> base64.__init__
<method-wrapper '__init__' of module object at 0x00AB5630>

参见用法:

1
2
3
4
5
>>> base64.__init__('modname', 'docs here')
>>> base64.__doc__
'docs here'
>>> base64.__name__
'modname'