Python dict类的用途是什么

Python dict类的用途是什么,python,Python,有人能解释一下dict类的用途吗?这段代码来自《深入Python》 我理解键=值对与self['name']=filename的赋值,但是继承dict类与此有什么关系?请帮助我理解。如果您不熟悉面向对象编程的继承概念,请至少看一看wiki文章(不过,这只是介绍,可能不是最好的) 在python中,我们使用此语法将类A定义为类B的子类: class A(B): pass # empty class 在您的示例中,由于FileInfo类继承自标准类型,您可以将该类的实例用作字典(因为它们具有常

有人能解释一下dict类的用途吗?这段代码来自《深入Python》


我理解键=值对与
self['name']=filename
的赋值,但是继承
dict
类与此有什么关系?请帮助我理解。

如果您不熟悉面向对象编程的继承概念,请至少看一看wiki文章(不过,这只是介绍,可能不是最好的)

在python中,我们使用此语法将类
A
定义为类
B
的子类:

class A(B):
  pass # empty class
在您的示例中,由于
FileInfo
类继承自标准类型,您可以将该类的实例用作字典(因为它们具有常规
dict
对象具有的所有方法)。除此之外,还允许您按如下键分配值(
dict
提供了处理此操作的方法):


这是您想要的解释还是您不了解其他内容?

当Python中的一个类继承自另一个类时,这意味着在继承的类上定义的任何方法本质上都是在新创建的类上定义的

因此,当
FileInfo
继承
dict
时,意味着
dict
类的所有功能现在都可供
FileInfo
使用,除了
FileInfo
可以声明的任何内容之外,或者更重要的是,通过重新定义方法或参数来覆盖


由于Python中的
dict
对象允许键/值名称对,这使得
FileInfo
能够访问相同的机制。

它用于创建您自己的自定义字典类型

您可以为自己的特殊目的覆盖
\uuuuu init\uuuuu
\uuuu getitem\uuuuuu
\uuuuuu setitem\uuuuu
方法,以扩展字典的使用

阅读《深入Python》文本的下一节:我们使用这种继承来处理文件信息,就像使用普通字典一样

# From the example on the next section
>>> f = fileinfo.FileInfo("/music/_singles/kairo.mp3")
>>> f["name"]
'/music/_singles/kairo.mp3'
fileinfo
类的设计方式是在其构造函数中接收文件名,然后让用户以从普通字典获取值的方式获取文件信息

# From the example on the next section
>>> f = fileinfo.FileInfo("/music/_singles/kairo.mp3")
>>> f["name"]
'/music/_singles/kairo.mp3'
此类类的另一个用途是创建控制其数据的字典。例如,您需要一本字典,当向其分配内容或从其“传感器”键读取内容时,它会执行一项特殊的操作。您可以定义特殊的
\uuuuu setitem\uuuu
函数,该函数对键名敏感:

def __setitem__(self, key, item):
    self.data[key] = item
    if key == "sensor":
        print("Sensor activated!")
或者,您希望在用户每次读取“温度”键时返回一个特殊值。为此,您将子类化一个
\uuu getitem\uuu
函数:

def __getitem__(self, key):
    if key == "temperature":
        return CurrentWeatherTemperature()
    else:
        return self.data[key]

@KL-7——您介意提供一个从
dict
继承的子类的不同示例吗?在实践中如何使用它?我不认为人们经常创建
dict
或其他内置类型的子类,而是有序字典的实现。正如您在
OrderedDict
类中所看到的,是
dict
类型的子类。@tkone--继承
dict
对象对于键值对是必需的吗?不是每个python对象都有这个功能吗?不,那是JavaScript:)。Python对象具有可通过“点”符号(
test.parameter
)访问的属性
dict
是一个关联数组,您可以在其中使用关联键访问值。尝试在Python中实例化一个对象,并像访问关联数组一样访问它
test['parameter']
。您将得到
TypeError:“Test”对象不可订阅。
现在制作一个dict并尝试通过“dot”符号访问它。您将
AttributeError:'dict'对象没有属性N
def __getitem__(self, key):
    if key == "temperature":
        return CurrentWeatherTemperature()
    else:
        return self.data[key]