Programmazione orientata agli oggetti in Python
Alex Yarosh
Content Quality Analyst @ DataCamp
self come primo argomentoself.___
class MyClass:
# definizione di funzione nella classe
# primo argomento è self
def my_method1(self, other_args...):
# fai cose qui
def my_method2(self, my_attr):
# attributo creato tramite assegnazione
self.my_attr = my_attr
...
__init__() viene chiamato ogni volta che un oggetto è creato.class Customer: def __init__(self, name): self.name = name # <--- Crea l'attributo .name e assegnalo al parametro name print("Il metodo __init__ è stato chiamato")cust = Customer("Lara de Silva") #<--- __init__ è chiamato implicitamente print(cust.name)
Il metodo __init__ è stato chiamato
Lara de Silva
class Customer: def __init__(self, name, balance): # <-- parametro balance aggiuntoself.name = name self.balance = balance # <-- attributo balance aggiunto print("Il metodo __init__ è stato chiamato")cust = Customer("Lara de Silva", 1000) # <-- __init__ è chiamato print(cust.name) print(cust.balance)
Il metodo __init__ è stato chiamato
Lara de Silva
1000
class Customer: def __init__(self, name, balance=0): #<--imposta valore predefinito per balanceself.name = name self.balance = balance print("Il metodo __init__ è stato chiamato")cust = Customer("Lara de Silva") # <-- non specificare esplicitamente balanceprint(cust.name) print(cust.balance) # <-- attributo creato comunque
Il metodo __init__ è stato chiamato
Lara de Silva
0
class MyClass:
def my_method1(self, attr1):
self.attr1 = attr1
...
def my_method2(self, attr2):
self.attr2 = attr2
...
obj = MyClass()
obj.my_method1(val1) # <-- attr1 creato
obj.my_method2(val2) # <-- attr2 creato
class MyClass: def __init__(self, attr1, attr2): self.attr1 = attr1 self.attr2 = attr2 ...# Tutti gli attributi sono creati obj = MyClass(val1, val2)
__init__()__init__()CamelCase per le classi, lower_snake_case per funzioni e attributi
__init__()CamelCase per le classi, lower_snake_case per funzioni e attributi
self come selfclass MyClass:
# Funziona ma non è consigliato
def my_method(kitty, attr):
kitty.attr = attr
__init__()CamelCase per le classi, lower_snake_case per funzioni e attributi
self è selfclass MyClass:
"""Questa classe non fa nulla"""
pass
Programmazione orientata agli oggetti in Python