classi in Python

class Persona:
	nome = None
	cognome = None
	eta = 0

	def __init__(self, nome, cognome, eta):
		self.nome = nome
		self.cognome = cognome
		self.eta = eta

	def __str__(self):
		return self.nome + " " + self.cognome + " " + self.eta

	def compleanno(self):
		self.eta++

a = Persona("Mario", "Rossi", 29)
print(a)

componenti: nome, cognome, eta

metodi:

__init__
costruttore
__str__
converte l'oggetto in stringa
per esempio, per stamparlo
compleanno
un metodo

le componenti degli oggetti

class Persona:
	nome = None
	cognome = None
	eta = 0

a = Persona()
a.nome = "Mario"
a.cognome = "Rossi"
a.eta = 29

print(a)

si crea l'oggetto persona con a = Persona()
come a = new Persona(); in Java

contiene a.nome, a.cognome, a.eta
come in Java


risultato della stampa

class Persona:
	nome = None
	cognome = None
	eta = 0

a = Persona()
a.nome = "Mario"
a.cognome = "Rossi"
a.eta = 29

print(a)

viene stampato:

<__main__.Persona object at 0x7f23fb11b890>

stampa

class Persona:
	nome = None
	cognome = None
	eta = 0

a = Persona()
a.nome = "Mario"
a.cognome = "Rossi"
a.eta = 29

print(a)

l'istruzione print(a) fa due cose:


metodo di stampa

class Persona:
	nome = None
	cognome = None
	eta = 0

	def __str__(self):
		return self.nome + " " + self.cognome + " " + str(self.eta)

a = Persona()
a.nome = "Mario"
a.cognome = "Rossi"
a.eta = 29

print(a)

ridefinisce __str__
stampa(a) chiama il metodo ridefinito

risultato della stampa:

Mario Rossi 29

cos'è self?

class Persona:
	nome = None
	cognome = None
	eta = 0

	def __str__(self):
		return self.nome + " " + self.cognome + " " + str(self.eta)

a = Persona()
a.nome = "Mario"
a.cognome = "Rossi"
a.eta = 29

print(a)

tutti i metodi, incluso __str__:

analogo a this in Java
ma va messo come primo argomento del metodo


costruttore

class Persona:
	nome = None
	cognome = None
	eta = 0

	def __init__(self, nome, cognome, eta):
		self.nome = nome
		self.cognome = cognome
		self.eta = eta

	def __str__(self):
		return self.nome + " " + self.cognome + " " + str(self.eta)

a = Persona("Mario", "Rossi", 29)
print(a)

analogo a Persona(String nome, String cognome, int eta) in Java

permette di inizializzare l'oggetto quando viene creato
a = Persona("Mario", "Rossi", 29)

primo argomento self:


un metodo qualsiasi

class Persona:
	nome = None
	cognome = None
	eta = 0

	def __init__(self, nome, cognome, eta):
		self.nome = nome
		self.cognome = cognome
		self.eta = eta

	def __str__(self):
		return self.nome + " " + self.cognome + " " + str(self.eta)

	def compleanno(self):
		self.eta += 1

a = Persona("Mario", "Rossi", 29)
print(a)
a.compleanno()
print(a)

come per tutti i metodi, il primo argomento è self: