首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不可变类型与可变类型

不可变类型与可变类型
EN

Stack Overflow用户
提问于 2011-11-09 03:41:53
回答 7查看 270K关注 0票数 201

我搞不懂什么是不可变类型。我知道float对象被认为是不可变的,下面是我书中的例子:

class RoundFloat(float):
    def __new__(cls, val):
        return float.__new__(cls, round(val, 2))

这是不是因为类结构/层次结构而被认为是不可变的?这意味着float位于类的顶部,并且是它自己的方法调用。类似于这种类型的示例(尽管我的书中说dict是可变的):

class SortedKeyDict(dict):
    def __new__(cls, val):
        return dict.__new__(cls, val.clear())

而可变的东西在类中有方法,使用这种类型的示例:

class SortedKeyDict_a(dict):
    def example(self):
        return self.keys()

另外,对于最后一个class(SortedKeyDict_a),如果我将此类型的set传递给它:

d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2))

在不调用example方法的情况下,它返回一个字典。带有__new__SortedKeyDict将其标记为错误。我尝试使用__new__将整数传递给RoundFloat类,但没有标记出任何错误。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8056130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档