[Python] costruzione dinamica di oggetti e sotto-oggetti

Manlio Perillo manlio.perillo a gmail.com
Mer 10 Lug 2013 14:14:01 CEST


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Il 09/07/2013 15:26, Riccardo mancuso ha scritto:
>>
>> Da quello che (ancora non sono sicuro di capire) vuole fare l'OP, io farei:
>>
>> lavello = {
>>     'name': 'lavello',
>>     'width': x
>>     'xxx': ...
>> }
>>
>> forno = {
>>     'name': 'forno',
>>     'width': x,
>>     'xxx': ...
>>
> [...]
> non voglio solo collezionare, ma anche costruire oggetti via via più
> complessi come assemblati di unità più piccole e che possano essere
> create runtime.
> Con i dizionari diventa dura da gestire.

Quale credi sia la differenza tra:

lavello_dict = {
    'name': 'lavello',
    'width': 10,
    'xxx': 'xxx'
}

e

class Lavello(object):
    def __init__(self, width, xxx):
        self.width = width
        self.xxx = xxx

lavello_obj = Lavello(10, 'xxx')

?


Hint:

  print lavello_obj.__dict__
  print lavello_obj.__class__.__name__


Ovviamente *ci sono* differenze, ma non nell'esempio che hai fatto
all'inizio.

Le classi sono comode se oltre ai dati aggiungi anche i metodi, che
implementano una interfaccia comune.  Nel tuo caso non è chiaro se e
quale interfaccia ti serva.


Tra dover fare:

  if isinstance(obj, Lavello):
    obj.do_lavello()

e

  if obj['name'] == 'lavello':
    do_lavello(obj)

io preferisco la seconda.




Ciao  Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAlHdUAkACgkQscQJ24LbaUT+9wCfdfs6tAzHYiKhBpI+36qvunZ1
530An2ye0a/S5NuVKFjz9opbZYXMapn1
=0a21
-----END PGP SIGNATURE-----


Maggiori informazioni sulla lista Python