Metodi di classe

Introduzione alla programmazione orientata agli oggetti in Python

George Boorman

Curriculum Manager, DataCamp

Metodi

class Employee:
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

    def give_raise(self, amount):
        self.salary += amount


# Unique attribute values emp_one = Employee("John", 40000)
emp_one.give_raise(5000) print(emp_one.salary)
45000









# Unique attribute values emp_two = Employee("Jane", 60000)
emp_two.give_raise(5000) print(emp_two.salary)
65000
Introduzione alla programmazione orientata agli oggetti in Python

Metodi di classe

  • Possibile definire metodi di classe
  • Deve avere un ambito ristretto perché non possono usare dati a livello di oggetto
class MyClass:
    # Use a decorator to declare a class method
    @classmethod

# cls argument refers to the class def my_awesome_method(cls, args...): # Do stuff here # Can't use any instance attributes
# Call the class, not the object MyClass.my_awesome_method(args...)
  • Come per self, cls è una convenzione, ma qualsiasi parola va bene
Introduzione alla programmazione orientata agli oggetti in Python

Costruttori alternativi

class Employee:
  def __init__(self, name, salary):
      self.name = name
      self.salary = salary

@classmethod def from_file(cls, filename): with open(filename, "r") as f: # Read the first line name = f.readline().strip() # Read the second line as integer salary = int(f.readline().strip())
return cls(name, salary)
  • Consentire costruttori alternativi
  • Può avere solo uno __init__()
  • Usa i metodi di classe per creare oggetti
  • Usa return per restituire un oggetto
  • cls(...) chiamerà __init__(...)
Introduzione alla programmazione orientata agli oggetti in Python

Costruttori alternativi

class Employee:
  def __init__(self, name, salary):
      self.name = name
      self.salary = salary
  @classmethod
  def from_file(cls, filename):
      with open(filename, "r") as f:
          name = f.readline().strip()
          salary = int(f.readline().strip())
      return cls(name, salary)  

Employee.txt

File di testo contenente il nome John Smith e lo stipendio 40000

# Create an employee without calling Employee()
emp = Employee.from_file("employee_data.txt")
print(emp.name)
John Smith
Introduzione alla programmazione orientata agli oggetti in Python

Quando usare i metodi di classe

  • Costruttori alternativi

  • Metodi che non richiedono attributi a livello di istanza

  • Limitare a una singola istanza (oggetto) di una classe

    • Connessioni al database
    • Impostazioni di configurazione
Introduzione alla programmazione orientata agli oggetti in Python

Passiamo alla pratica!

Introduzione alla programmazione orientata agli oggetti in Python

Preparing Video For Download...