Metode de clasă

Introducere în Programarea Orientată pe Obiecte în Python

George Boorman

Curriculum Manager, DataCamp

Metode

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

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


# Valori unice ale atributelor emp_one = Employee("John", 40000)
emp_one.give_raise(5000) print(emp_one.salary)
45000









# Valori unice ale atributelor emp_two = Employee("Jane", 60000)
emp_two.give_raise(5000) print(emp_two.salary)
65000
Introducere în Programarea Orientată pe Obiecte în Python

Metode de clasă

  • Este posibil să se definească metode de clasă
  • Trebuie să aibă o sferă restrânsă, deoarece nu pot folosi date la nivel de obiect
class MyClass:
    # Folosiți un decorator pentru a declara o metodă de clasă
    @classmethod

# argumentul cls se referă la clasă def my_awesome_method(cls, args...): # Cod aici # Nu poate folosi atribute de instanță
# Apelați clasa, nu obiectul MyClass.my_awesome_method(args...)
  • Ca și self, cls este o convenție, dar orice cuvânt funcționează
Introducere în Programarea Orientată pe Obiecte în Python

Constructori 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: # Citește prima linie name = f.readline().strip() # Citește a doua linie ca întreg salary = int(f.readline().strip())
return cls(name, salary)
  • Permit constructori alternativi
  • Se poate defini un singur __init__()

 

  • Folosiți metode de clasă pentru a crea obiecte
  • Folosiți return pentru a returna un obiect
  • cls(...) va apela __init__(...)
Introducere în Programarea Orientată pe Obiecte în Python

Constructori 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

Fișier text cu numele John Smith și salariul 40000

# Creează un angajat fără a apela Employee()
emp = Employee.from_file("employee_data.txt")
print(emp.name)
John Smith
Introducere în Programarea Orientată pe Obiecte în Python

Când se folosesc metodele de clasă

  • Constructori alternativi

  • Metode care nu necesită atribute de instanță

  • Restricționarea la o singură instanță (obiect) a unei clase

    • Conexiuni la baze de date
    • Setări de configurare
Introducere în Programarea Orientată pe Obiecte în Python

Să exersăm!

Introducere în Programarea Orientată pe Obiecte în Python

Preparing Video For Download...