Python 使用[]设置对象变量时调用什么?

Python 使用[]设置对象变量时调用什么?,python,Python,如果我有一个dict对象,说values={'a':'alpha','b':'bravo'} 我看到过这样的用例:人们可以通过值['a']来获取a键的值 现在我知道这是访问dict值的正常方法,但我也看到它与对象一起使用,例如Tk.Scrollbar['command']=yadayada 对于将[]与对象一起使用的做法,是否有一个名称或文档?这种[]称为索引或切片(有时称为数组/序列/映射,如访问)。x[idx]=val称为索引或切片分配 负责实例在索引或切片时的行为的方法有: , 及 (

如果我有一个
dict
对象,说
values={'a':'alpha','b':'bravo'}

我看到过这样的用例:人们可以通过
值['a']
来获取
a
键的值

现在我知道这是访问
dict
值的正常方法,但我也看到它与对象一起使用,例如
Tk.Scrollbar['command']=yadayada


对于将
[]
与对象一起使用的做法,是否有一个名称或文档?

这种
[]
称为索引或切片(有时称为数组/序列/映射,如访问)。
x[idx]=val
称为索引或切片分配

负责实例在索引或切片时的行为的方法有:

  • ,
  • (在Python-2.x中也有
    \uuuu getslice\uuuu
    ,…但是自从Python 2.0以来,这些都被弃用了-如果您不从使用这些的类继承,您就不应该需要它们)
例如(缺少任何实际实现,只有一些
print
s):

例如:

>>> sth = Something()
>>> sth[10]  
in getitem
>>> sth[10] = 100  
in setitem
>>> del sth[10]  
in delitem

[]
称为索引或切片(有时称为数组/序列/映射式访问)。
x[idx]=val
称为索引或切片分配

负责实例在索引或切片时的行为的方法有:

  • ,
  • (在Python-2.x中也有
    \uuuu getslice\uuuu
    ,…但是自从Python 2.0以来,这些都被弃用了-如果您不从使用这些的类继承,您就不应该需要它们)
例如(缺少任何实际实现,只有一些
print
s):

例如:

>>> sth = Something()
>>> sth[10]  
in getitem
>>> sth[10] = 100  
in setitem
>>> del sth[10]  
in delitem

python tkinter文档中简要描述了这一点。Tkinter只是为了方便起见,该功能没有Tkinter特有的名称

选项控制小部件的颜色和边框宽度。可通过三种方式设置选项:

在对象创建时,使用关键字参数

fred=按钮(self,fg=“red”,bg=“blue”)

创建对象后,将选项名称视为字典索引

fred[“fg”]=“red”

fred[“bg”]=“blue”

使用config()方法在对象创建之后更新多个属性

fred.config(fg=“red”,bg=“blue”)


有关tkinter上下文之外的更多通用信息,请参见python tkinter文档中的简要描述。Tkinter只是为了方便起见,该功能没有Tkinter特有的名称

选项控制小部件的颜色和边框宽度。可通过三种方式设置选项:

在对象创建时,使用关键字参数

fred=按钮(self,fg=“red”,bg=“blue”)

创建对象后,将选项名称视为字典索引

fred[“fg”]=“red”

fred[“bg”]=“blue”

使用config()方法在对象创建之后更新多个属性

fred.config(fg=“red”,bg=“blue”)


有关tkinter上下文之外的更多通用信息,请参见

您确定Tk.Scrollbar不仅仅是一个字典吗?请参见您确定Tk.Scrollbar不仅仅是一个字典吗?自Python 2.0以来,它一直被弃用,但内置类型仍然使用,所以在对这些子类化时需要重写它。@chepner这是正确的。我只想提及
\uuu getslice\uuuu
,而不想详细说明——所以我没有仔细检查我在那里写的东西。我更新了答案。除非使用了切片语法(即,
[]
中至少有一个
)。
\uuuu getslice\uuuu
自Python 2.0以来就被弃用,但它仍然由内置类型使用,因此在对这些类型进行子类化时需要重写它。@chepner这是正确的。我只想提及
\uuu getslice\uuuu
,而不想详细说明——所以我没有仔细检查我在那里写的东西。我更新了答案。除非使用了切片语法(即
[]
中至少有一个
),否则它不称为“切片”。