Python int对象 里面哪个属性决定着它本身的值
class Test(int):@staticmethod
def __new__(cls, index):
return super(cls, cls).__new__(cls)
def __init__(self, index):
self.index = index
def __int__(self):
return self.index
def __float__(self):
return float(self.index)
def __repr__(self):
return "%s" % self.index
def __str__(self):
return "%s" % self.index
a = Test(55)
print(0 + a)
print(a)
print(int(a))
print(float(a))
# 重写所有方法,总感觉那样太蠢了......{:10_266:}
本帖最后由 大西瓜吃吃 于 2022-3-12 16:07 编辑
你好同学,当你继承int类后,相当于已经有了("继承"了)它所有的特性,因此你只需要增加你个人的新方法即可,如下:
class MyInt(int):
def my_add(self, other):
return MyInt(
self + other
)
a = MyInt(55)
b = a.my_add(10)
# b -> MyInt(65)
请你务必注意到,此时的self也就是实例本身,还记得吗,你自己继承了int类啦!
同时我也注意到了,你在重写 __init__,这个案例里你完全无此必要,因为你可以从我的代码中仔细意识到,self就是MyInt实例本身!由于你继承了 int,这相当于也在说:self就是你到时候int类的实例本身!!(很显然我的例子代码中无复写任何int本来有的方法)
额外注明1:请注意到,当执行完我的代码后,b变量为 65,并且是MyInt类型的,这是因为我返回啦!你大可以看作一个正常的方法啦!
额外注明2:注意到你给出的代码中正在试图自己定义各种方法,这当然是可以的,但是你就没有必要去继承int类了。你自行定义一个你个人的类,不去继承int,然后去补充各个行为,这个是可以接受哒~
{:10_254:} {:10_254:} {:10_254:}
页:
[1]