On Sat, 19 Aug 2006 01:05:00 +0200, Andrea Giammarchi <[EMAIL PROTECTED]> wrote:

Poi basta isinstance() senza scomodare il modulo types
per vedere se qualcosa è di un certo tipo.
http://www.canonical.org/~kragen/isinstance/

Guarda che qua dice robe abbastanza complesse che poco hanno a che fare con la 
funzione isinstance() ma piuttosto con cio` che fa isinstance(), non e` che se 
non la usi non sei caduto nella trappola :).

Il resto è tutto più o meno uguale. parseType con un dizionario la fai
in 3 righe ed è più facilmente manutenibile.
???
def parseType(self, value):
       stypes = {
           "string":"s",
           "int":"i", "integer":"i",
           "null":"N", "none":"N",
           "class":"O", "object":"O",
           "bool":"b", "boolean":"b",
           "array":"a", "list":"a", "dict":"a", "tuple":"a",
           "float":"d", "double":"d", "long":"d"
       }
       result = "u"
       vtype = ""
       if "type" in value:
           vtype = value["type"].lower()
           if vtype in stypes:
               result = stypes[vtype]
       return result

def parseType(self, value):
   stypes = {...}
   type = value.get('type', '').lower()
   return stypes.get(type, 'u')

invio / ricezione di variabili complesse attraverso l'uso di metodi server al fine di togliere metà del debug sul client e dedicarsi al solo debug server

Non sacrificherei mai l'architettura alla mia comodita` di breve periodo, anche 
perche` poi una volta che e` stato sviluppato il tutto e` piu` comoda 
l'architettura ben fatta.

- procedurale = chiamo una procedura. *ESATTAMENTE* la stessa cosa che
stai facendo tu.
attraverso un oggetto

No, non c'entra un tubo. send(state, 'method_name') e` una notazione 
perfettamente OO.

In common lisp (a mio parere l'object system piu` potente mai creato):

(defclass song ()
 ((name
   :initarg :name
   :initform (error "Ci vuole un nome")
   :accessor name
   :documentation "Il nome della traccia")
  (artist
   :initarg :artist
   :accessor artist)
  (duration
   :initarg :duration
   :accessor duration)))

(defmethod duration-in-minutes ((s song))
 (/ (duration s) 60.0))

(defmethod print-object ((s song) stream)
 (print-unreadable-object (s stream :type t :identity t)
   (format stream "~A - ~A" (name s) (artist s))))

(defparameter *song* (make-instance
                     'song
                     :name "My way"
                     :artist "Frank Sinatra"
                     :duration 180))

(princ-to-string (duration-in-minutes *song*))
(print-object *song* t)

La chiamata di metodo e`:

(duration-in-minutes *song*)

il che equivale a chiamare la funzione duration-in-minutes passando *song* come 
primo argomento su cui viene fatto il multiple dispatch per tipo (attraverso il 
quale vengono indicizzate le generic function agenti sugli stessi tipi in 
ingresso).

Il tipo di notazione che si usa ha ben poco a che fare con l'essere o meno OO. 
C'e` ben altro dietro.

UTF-8 è un modo php per dire che sfrutta la serializzazione / unserializzazione in multibytes ... in Python non esisterebbe UTF-8, anzi ... quella var la dovrei togliere ma la PHP_Serializer, per portabilità, deve poter supportare la modalità di php

Provo a rispiegartelo:
Non esistono stringhe di cui non si conosce l'encoding. E non esistono stringhe 
di testo che non siano unicode e ti riconsiglio di leggere il link che ti ho 
gia` postato riguardo a unicode e` _DAVVERO_ il _MINIMO_ che si _DEVE_ 
assolutamente _SAPERE_.
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a