首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UserDict

源代码: Lib / UserDict.py

该模块定义了一个mixin,DictMixin为已经具有最小映射接口的类定义了所有的字典方法。这大大简化了编写需要替代字典的类(如搁置模块)。

该模块还定义了一个类,UserDict它充当字典对象的包装。这个类的需求在很大程度上被直接从dict(从Python 2.2版开始变得可用的功能)子类化的能力所取代。在引入之前dictUserDict该类用于创建类似字典的子类,通过覆盖现有方法或添加新方法来获得新的行为。

UserDict模块定义了这个UserDict类,并且DictMixin

class UserDict.UserDict([initialdata])

模拟字典的类。实例的内容保存在一个常规的字典中,通过实例的data属性可以访问该字典UserDict。如果提供initialdatadata则用其内容进行初始化; 请注意,对initialdata的引用将不会保留,允许将其用于其他目的。

注意

为了向后兼容,实例UserDict不可迭代。

class UserDict.IterableUserDict([initialdata])

它的子类UserDict支持直接迭代(例如for key in myDict)。

除了支持映射的方法和操作外(请参见映射类型 - 词典部分),UserDict并且IterableUserDict实例提供了以下属性:

IterableUserDict.data

用于存储UserDict课程内容的真正词典。

class UserDict.DictMixin

混入定义已经有一个最小词典界面包括类所有字典方法__getitem__()__setitem__()__delitem__(),和keys()

这个mixin应该被用作超类。添加上述每个方法都会逐渐增加更多的功能。例如,定义所有,但__delitem__()只会妨碍pop()popitem()从全接口。

除了四个碱基的方法,逐步更效率带有限定__contains__()__iter__(),和iteritems()

由于mixin不知道子类的构造函数,所以它没有定义__init__()copy()

从Python版本2.6开始,建议使用collections.MutableMapping而不是DictMixin

需要注意的是DictMixin没有实现viewkeys()viewvalues()viewitems()方法。

注意

当Python 2.2发布时,这个类的许多用例被list直接子类化的能力所包容。但是,少数用例仍然存在。

该模块提供了一个基础数据存储的列表接口。默认情况下,该数据存储是a list; 然而,它可以用来包围其他对象(如持久存储)的类似列表的界面。

另外,这个类可以与使用多重继承的内置类混合使用。这有时可能有用。例如,你可以继承UserList,并str在同一时间。这对于真实list和真实都是不可能的str

这个模块定义了一个充当列表对象的包装的类。对于自己的类列表类来说,它是一个有用的基类,可以从它们继承并覆盖现有方法或添加新类。通过这种方式,可以将新行为添加到列表中。

UserList模块定义了UserList类:

class UserList.UserList([list])

模拟列表的类。实例的内容保存在一个常规列表中,该列表可通过实例的data属性访问UserList。实例的内容最初设置为列表副本,默认为空列表[]列表可以是任何可迭代的,例如真正的Python列表或UserList对象。

注意

UserList班已经搬到了collections在Python 3模块的2to3的转换你的源代码到Python 3时,工具会自动适应进口。

除了支持可变序列的方法和操作(请参见序列类型 - str,unicode,list,tuple,bytearray,buffer,xrange),UserList实例还提供以下属性:

UserList.data

一个真正的Python列表对象,用于存储UserList该类的内容。

子类化要求:类需要UserList提供一个构造函数,可以使用无参数或一个参数来调用构造函数。返回新序列的列表操作尝试创建实际实现类的实例。为此,它假定构造函数可以用一个参数来调用,该参数是一个用作数据源的序列对象。

如果一个派生类不希望遵守这个要求,那么这个类支持的所有特殊方法都需要被覆盖; 请咨询消息来源,了解有关在这种情况下需要提供的方法的信息。

在版本2.0中进行了更改:Python版本1.5.2和1.6还要求可以不带参数地调用构造函数,并提供可变data属性。早期版本的Python没有尝试创建派生类的实例。

注意

UserString模块中的这个类仅可用于向后兼容。如果您编写的代码不需要与Python 2.2以前版本的Python一起工作,请考虑直接从内置str类型进行子类化,而不是使用UserString(没有内置的等价物MutableString)。

这个模块定义了一个充当字符串对象包装的类。对于自己的类字符串类来说,它是一个有用的基类,它可以继承它们并覆盖现有的方法或添加新的方法。通过这种方式,可以向字符串添加新的行为。

应该指出的是,与真正的字符串或Unicode对象相比,这些类非常低效; 这是尤其如此MutableString

UserString模块定义了以下类:

class UserString.UserString([sequence])

模拟字符串或Unicode字符串对象的类。实例的内容保存在一个常规字符串或Unicode字符串对象中,可以通过实例的data属性进行访问UserString。实例的内容最初设置为序列的副本。序列可以是常规的Python字符串或Unicode字符串,UserString(或子类)的实例,也可以是使用内置str()函数可以转换为字符串的任意序列。

注意

UserString班已经搬到了collections在Python 3模块的2to3的转换你的源代码到Python 3时,工具会自动适应进口。

class UserString.MutableString([sequence])

这个类是从UserString上面派生的,并重新定义了字符串是可变的。可变字符串不能用作字典键,因为字典需要不可变对象作为键。这个类的主要目的是作为一个继承和必要性的教育例子,去除(覆盖)该__hash__()方法,以便捕获使用可变对象作为字典键的尝试,否则这种方法很容易出错并且难以追踪。

自2.6版弃用:MutableString该类已在Python 3中删除。

除了支持字符串和Unicode对象的方法和操作外(请参阅字符串方法一节),UserString实例还提供以下属性:

MutableString.data

一个真正的Python字符串或Unicode对象,用于存储UserString该类的内容。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com