Forum
>>
Programmazione Python
>>
Scripting
>>
Attributi di classe predefiniti e non mutabili
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da vinny74 |
2016-11-01 12:11:16 - Attributi di classe predefiniti e non mutabili
|
Ciao a tutti spero di essere nella sezione giusta, premetto che sono un neofita di python, sto studiando utilizzo python 3.4, sono arrivato alle classi e non sono riuscito a capire se è fattibile e se si come creare una classe con degli attributi precostituiti e che non sia possibile aggiungerne altri, cerco di spiegarmi meglio:
class MyClass: def __init__(self,a,b): self.a = a self.b = b Il mio scopo è quello di avere come attributi delle varie istanze solo "a e b" e che una chiamata del tipo test = MyClass(1,2) test.name='prova' mi dia un errore o non prenda affatto in carico l'attributo name. Grazie --- Ultima modifica di vinny74 in data 2016-11-01 12:29:52 --- |
|
Scritto da Claudio_F |
2016-11-01 15:16:07 - Re: Attributi di classe predefiniti e non mutabili
|
Credo che sia un comportamento non evitabile, a quanto mi risulta solo gli oggetti derivanti da classi "primitive" del linguaggio (list, str ecc) sono immutabili.
>>> a = list() >>> type(a) <class 'list'> >>> a.pippo = 9 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'list' object has no attribute 'pippo'Ma qualsiasi altra cosa definita dall'utente, anche facente parte di librerie terze, è modificabile (anzi, su questo si basa il monkeypatching, cioè "attaccare" nuove informazioni ad oggetti... che come dice il nome non rappresenta propriamente un buono stile di programmazione): >>> import tkinter >>> a = tkinter.Tk() >>> a.pippo = 9 >>> a.pippo 9 *** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione *** |
|
Scritto da ㎝ |
2016-11-01 20:38:13 - Re: Attributi di classe predefiniti e non mutabili
|
>>> from collections import namedtuple >>> MyClass = namedtuple('MyClass', 'a b') >>> test = MyClass(1, 2) >>> test MyClass(a=1, b=2) >>> test.name = 'prova' Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'MyClass' object has no attribute 'name' https://docs.python.org/3/library/collections.html#collections.namedtuple
Ciao, ㎝ --- Ultima modifica di ㎝ in data 2016-11-01 20:39:11 --- THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝ |
|
Scritto da vinny74 |
2016-11-01 22:18:26 - Re: Attributi di classe predefiniti e non mutabili
|
|
Pagina: 1
Esegui il login per scrivere una risposta.