我想知道继承是如何运作的int
, list
, string
和其他不可变类型。
基本上我只是继承一个这样的类:
class MyInt(int):
def __init__(self, value):
?!?!?
我似乎无法弄清楚,如何设置像它所设置的值int
?如果我做self.value = value
那么我的类将像这样使用:
mi = MyInt(5)
print(mi.value) # prints 5
而我想这样使用它:
mi = MyInt(5)
print(mi) # prints 5
我该怎么做呢?
你可以子类化int
,但因为它是不可变的你需要提供一个.__new__()构造函数钩子:
class MyInt(int):
def __new__(cls, value):
new_myint = super(MyInt, cls).__new__(cls, value)
return new_myint
您确实需要致电基地__new__
构造函数来正确创建您的子类。
在 Python 3 中,您可以省略参数super()
共:
class MyInt(int):
def __new__(cls, value):
new_myint = super().__new__(cls, value)
return new_myint
当然,这假设您想要操纵value
在传递到之前super().__new__()
或操纵new_myint
回来之前再做一些;否则你也可以删除整个__new__
方法并将其实现为class MyInt(int): pass
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)