You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在Python中定义兼具整数特性与实例变量存储能力的数据对象?

当然能做到!这其实是Python面向对象编程里很经典的「扩展内置类型」场景,咱们直接继承int类就能轻松实现需求——既保留普通整数的所有运算、比较特性,又能存储自定义的实例变量。

实现自定义类整数对象

完整可运行代码

class PseudoInteger(int):
    def __new__(cls, value, **kwargs):
        # 由于int是不可变类型,必须通过__new__创建实例
        instance = super().__new__(cls, value)
        # 将所有额外的关键字参数绑定为实例变量
        for key, val in kwargs.items():
            setattr(instance, key, val)
        return instance

# 测试示例场景
pseudo_integer = PseudoInteger(5, hidden_object="Hello World!")
print(5 + pseudo_integer)  # 输出: 10
print(pseudo_integer == 5) # 输出: True
print(pseudo_integer.hidden_object) # 输出: Hello World!

关键细节解释

  • 继承内置int类:这样PseudoInteger会自动继承int的所有魔法方法(比如__add__、__eq__),不需要我们手动重写就能实现和普通整数一致的运算、比较行为。
  • 使用__new__而非__init__:因为整数是不可变类型,实例的创建逻辑由__new__负责,__init__只是初始化已创建的实例。我们先调用父类的__new__生成整数实例,再给它添加自定义属性。
  • 灵活接收自定义属性:通过**kwargs可以接收任意数量的自定义实例变量,不用局限于某个固定的属性名,扩展性更强。

额外功能验证

你还可以测试更多场景,确认它的行为和普通整数完全一致:

print(pseudo_integer * 2)  # 输出: 10
print(pseudo_integer < 10) # 输出: True
# 动态添加新的实例变量
pseudo_integer.extra_data = "我是额外存储的数据"
print(pseudo_integer.extra_data) # 输出: 我是额外存储的数据

内容的提问来源于stack exchange,提问作者user7721335

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:25:51