python 继承类出错?求解。

2016-06-07 15:21:44 +08:00
 kingmo888
class Temp(object):
    a = 0
    def __init__(self, afile):
        self.b = afile
    
    def deal(self):
        pass

继承以上类:

class Stragety(Temp):
    def __init__(self, afile):
        super(Temp, self).__init__(afile)

提示出错:

builtins.TypeError: object.init() takes no parameters

明明有参数需求的嘛 - -!

2410 次点击
所在节点    Python
6 条回复
lzjun
2016-06-07 15:27:43 +08:00
正确的继承姿势:

class Stragety(Temp):
def __init__(self, afile):
super(Stragety, self).__init__(afile)
kingmo888
2016-06-07 15:27:46 +08:00
问题已经解决。
python3 中,重载时 super 不需要参数了。
```
super().__init__(afile)
```
我自己搞混了 py2 和 py3 ,最近在两个版本之间来回切换 - -!
kingmo888
2016-06-07 15:29:04 +08:00
1 楼运行下来也是 ok 的。 T.T
lixiaohan
2016-06-07 15:59:18 +08:00
Temp 的 super 是 object, object 的 init 方法不需要参数, 提示里面已经说了, 你应该像 1 楼那样,
mornlight
2016-06-07 16:04:48 +08:00
@kingmo888 这个地方的错误应该是用错了 super() 的参数
wodemyworld
2016-06-07 21:48:58 +08:00
@kingmo888 最好永远像 1L 这样写,免得 py2 、 3 互相不兼容

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/284138

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX