L'operatore punto viene utilizzato per accedere agli attributi di qualsiasi oggetto.Ad esempio, un numero complesso
>>> c = 3+4j
trovi (tra gli altri) i due attributi real
e imag
:
>>> c.real
3.0
>>> c.imag
4.0
così come quelli, ha un metodo, conjugate()
, che è anche un attributo:
>>> c.conjugate
<built-in method conjugate of complex object at 0x7f4422d73050>
>>> c.conjugate()
(3-4j)
Piazza notazione staffa viene utilizzata per l'accesso a membri di una raccolta, se questo è a chiave, nel caso di un dizionario o OTH er mappatura:
>>> d = {'a': 1, 'b': 2}
>>> d['a']
1
... o per indice, nel caso di una sequenza come una lista o una stringa:
>>> s = ['x', 'y', 'z']
>>> s[2]
'z'
>>> t = 'Kapow!'
>>> t[3]
'o'
Queste raccolte anche, separatamente, hanno attributi:
>>> 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>
... e ancora, nei casi precedenti, questi attributi sono metodi.
Mentre tutti gli oggetti hanno alcuni attributi, non tutti gli oggetti hanno membri. Per esempio, se si cerca di utilizzare la notazione parentesi quadra per accedere a un membro del nostro numero complesso c
:
>>> c[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'complex' object is not subscriptable
... otteniamo un errore (che ha senso, dal momento che non c'è modo ovvio per un numero complesso per avere membri).
È possibile definire come []
e .
lavoro accesso in una classe definita dall'utente, utilizzando __getitem__()
e __getattr__()
rispettivamente i metodi speciali. Spiegare come farlo va oltre lo scopo di questa domanda, ma puoi leggere di più a riguardo nello Python Tutorial.
(Sostanzialmente) usare '[]' per accedere agli indici e creare liste. Usare '.' per accedere ai metodi dell'oggetto – RafaelC
@RafaelCardoso:' .' è per gli attributi in generale, non solo per i metodi. – Olaf