Ho iniziato a imparare Python ieri e mi sono imbattuto in un problema. Mi piace sentire alcuni pensieri su di esso.
Come esercizio, ho deciso di costruire un chatserver. Come parte dell'esercizio, volevo scrivere un codice di ereditarietà.
Class A
def foo
print "foo"
Class B(A)
def bar
print "bar"
c = B()
c.foo()
>>> prints: foo
ok, a me sembra un'eredità di base molto normale (per favore fatemi sapere se non siete d'accordo). Quindi, per tornare al mio chatserver, ho pensato che sarebbe stato bello estendere il socket e trasformarlo in un socket di chat. La prima cosa che volevo fare è aggiungere un attributo chiamato nickname (importante in una chat). Oh, e ho pensato di usare select come soluzione di threading perché sembrava altamente raccomandato, quindi hai bisogno di una serie di socket (mi piace anche sentire le tue opinioni su questo). Ora, il problema che si ottiene è, quel socket, instanzia i socket, quindi
s = socket.socket(family, type,..)
invece di
s = Socket()
quindi quello che volevo fare è
class ChatSocket(Socket)
def getNickname()
return "bob" # obviously an example for simplicity
s = ChatSocket()
Prima domanda: Perché funziona in questo modo e non ha un'istanza "normale"?
Seconda domanda: Qual è secondo te una soluzione elegante a questa sfida?
Spero che abbia senso ... Qualsiasi pensiero è molto gradito