>>> c.conjugate
<built-in method conjugate of complex object at 0x7f4422d73050>
>>> c.conjugate()
(3-4j)
方括号表示法用于访问集合的成员,无论是字典中的键还是其他Map:
>>> d = {'a': 1, 'b': 2}
>>> d['a']
1
...或在序列(如列表或字符串)的情况下按索引:
>>> s = ['x', 'y', 'z']
>>> s[2]
'z'
>>> t = 'Kapow!'
>>> t[3]
'o'
这些集合还分别具有属性:
>>> d.pop
<built-in method pop of dict object at 0x7f44204068c8>
>>> s.reverse
<built-in method reverse of list object at 0x7f4420454d08>
>>> t.lower
<built-in method lower of str object at 0x7f4422ce2688>
4条答案
按热度按时间m2xkgtsf1#
点运算符用于访问任何对象的属性。例如,复数
具有两个属性
real
和imag
:除此之外,它还有一个方法
conjugate()
,这也是一个属性:方括号表示法用于访问集合的成员,无论是字典中的键还是其他Map:
...或在序列(如列表或字符串)的情况下按索引:
这些集合还分别具有属性:
......同样,在上面的例子中,这些属性碰巧是方法。
虽然所有的对象都有一些属性,但并不是所有的对象都有成员。例如,如果我们试图使用方括号来访问复数
c
的成员:...我们得到一个错误(这是有道理的,因为没有明显的方式为一个复数有成员)。
在用户定义的类中,可以分别使用特殊的方法
__getitem__()
和__getattr__()
来定义[]
和.
访问是如何工作的,解释如何操作超出了这个问题的范围,但是你可以在Python教程中阅读更多相关内容。tez616oj2#
.
用于访问属性(包括方法)。[]
用于访问所谓的“项”,其通常是各种容器对象的内容。JavaScript并不区分这两件事,但是Python区分了,
[]
用于访问列表或指令中的数据是正确的,例如,.
用于访问list.append
和dict.update
等方法,它也用于访问其他类型的对象上的其他数据;例如,编译后的正则表达式对象有一个保存regex模式的pattern
属性(您可以使用rx.pattern
访问它)。一般来说,约定是
[]
用于“开放式”数据存储,在这种情况下,您事先不知道对象将保存多少数据或什么类型的数据;.
更常用于对象“天生”具有的特定数据,并且可以通过预定义的名称访问这些数据。例如,仅仅知道某个列表并不能告诉您其中包含了什么(您可以使用[]
),但它可以告诉您可以向其追加内容(要访问append方法,您可以使用.
)。Python和JavaScript在这方面的另一个主要区别是,在Python中,
.
和[]
的行为都可以由对象自定义。因此,如果obj
是一个为它们定义自己行为的对象,obj.foo
或obj[foo]
可能会做一些特殊的事情。有各种自定义类型可以利用这一点来达到自己的目的。91zkwejq3#
[]
是容器的索引,例如列表或字典。.
是对象和模块的成员。它可以是方法、成员数据或属性。yqlxgs2m4#
实际上,Python使用方括号来括起键,对于列表,这是一个整型(无符号)索引或切片,而对于字典,这是一个(可具有的)对象,如字符串、元组等,甚至是一个整型(单值和无符号),这与许多其他使用类似或相同语法的语言是直接了当的。
.
用于访问对象的成员,与C++、C、Java、JavaScript等非常相似。编写一个允许使用点语法访问其元素的字典类非常简单。然而,为此,键必须是有效的Python标识符(letter { letter | digit |
_}
。然而,这并不常见。集合不支持索引,因为它不是内部排序的,并且“键”和“值”之间没有关系。对于列表,你不需要“获取索引”,但是你需要“获取索引的值”。对于dict,这是类似的,但是“索引”更灵活。但是,dict不允许切片,并且(像集合一样)是无序的。
旁注:Python使用一个对象的内部dict来组织它的成员。
你将得到这个类的所有属性(name:value),注意
myfunc
的条目。