【Error解决实录】TypeError: object.__init__() takes exactly one argument (the instance to initialize)

原代码:

# -*- coding: utf-8 -*-
class PositiveInteger(int):
    def __init__(self, value):
        super().__init__(value)

if __name__ == '__main__':
	# 实例化
    i = PositiveInteger(-3)# 
    print(i)

期望输出:

-3

实际输出:
【Error解决实录】TypeError: object.__init__() takes exactly one argument (the instance to initialize)_第1张图片

报错原因:
这里__init__()不能加任何参数,否则会报错。
因为父类 int 中没有任何参数,所以不能传入参数。

# __init__修改前
super().__init__(value)
# __init__修改后
super().__init__()

debug后:

# -*- coding: utf-8 -*-

class PositiveInteger(int):
    def __init__(self, value):      
        super().__init__()

if __name__ == '__main__':
	# 实例化
    i = PositiveInteger(-3)# -3
    print(i)
-3

总结:

1.__init__()中的参数需要依照父类的参数添加。

你可能感兴趣的:(随记,python)