鱼C论坛

 找回密码
 立即注册
查看: 1853|回复: 1

[已解决]Python int对象 里面哪个属性决定着它本身的值

[复制链接]
发表于 2022-3-12 14:48:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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))

# 重写所有方法,总感觉那样太蠢了......
最佳答案
2022-3-12 15:49:53
本帖最后由 大西瓜吃吃 于 2022-3-12 16:07 编辑

你好同学,当你继承int类后,相当于已经有了("继承"了)它所有的特性,因此你只需要增加你个人的新方法即可,如下:
  1. class MyInt(int):
  2.     def my_add(self, other):
  3.         return MyInt(
  4.             self + other
  5.         )

  6. a = MyInt(55)

  7. b = a.my_add(10)
  8. # b -> MyInt(65)
复制代码

请你务必注意到,此时的self也就是实例本身,还记得吗,你自己继承了int类啦!
同时我也注意到了,你在重写 __init__,这个案例里你完全无此必要,因为你可以从我的代码中仔细意识到,self就是MyInt实例本身!由于你继承了 int,这相当于也在说:self就是你到时候int类的实例本身!!(很显然我的例子代码中无复写任何int本来有的方法)

额外注明1:请注意到,当执行完我的代码后,b变量为 65,并且是MyInt类型的,这是因为我返回啦!你大可以看作一个正常的方法啦!

额外注明2:注意到你给出的代码中正在试图自己定义各种方法,这当然是可以的,但是你就没有必要去继承int类了。你自行定义一个你个人的类,不去继承int,然后去补充各个行为,这个是可以接受哒~


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-12 15:49:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 大西瓜吃吃 于 2022-3-12 16:07 编辑

你好同学,当你继承int类后,相当于已经有了("继承"了)它所有的特性,因此你只需要增加你个人的新方法即可,如下:
  1. class MyInt(int):
  2.     def my_add(self, other):
  3.         return MyInt(
  4.             self + other
  5.         )

  6. a = MyInt(55)

  7. b = a.my_add(10)
  8. # b -> MyInt(65)
复制代码

请你务必注意到,此时的self也就是实例本身,还记得吗,你自己继承了int类啦!
同时我也注意到了,你在重写 __init__,这个案例里你完全无此必要,因为你可以从我的代码中仔细意识到,self就是MyInt实例本身!由于你继承了 int,这相当于也在说:self就是你到时候int类的实例本身!!(很显然我的例子代码中无复写任何int本来有的方法)

额外注明1:请注意到,当执行完我的代码后,b变量为 65,并且是MyInt类型的,这是因为我返回啦!你大可以看作一个正常的方法啦!

额外注明2:注意到你给出的代码中正在试图自己定义各种方法,这当然是可以的,但是你就没有必要去继承int类了。你自行定义一个你个人的类,不去继承int,然后去补充各个行为,这个是可以接受哒~


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-29 22:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表