Metode kelas

Pengantar Pemrograman Berorientasi Objek di 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


# Nilai atribut unik emp_one = Employee("John", 40000)
emp_one.give_raise(5000) print(emp_one.salary)
45000









# Nilai atribut unik emp_two = Employee("Jane", 60000)
emp_two.give_raise(5000) print(emp_two.salary)
65000
Pengantar Pemrograman Berorientasi Objek di Python

Metode kelas

  • Dapat mendefinisikan metode kelas
  • Harus berskala sempit karena tidak bisa memakai data tingkat objek
class MyClass:
    # Gunakan dekorator untuk mendeklarasikan metode kelas
    @classmethod

# Argumen cls mengacu pada kelas def my_awesome_method(cls, args...): # Lakukan sesuatu di sini # Tidak boleh memakai atribut instance
# Panggil kelasnya, bukan objeknya MyClass.my_awesome_method(args...)
  • Seperti self, cls hanyalah konvensi; kata lain juga bisa
Pengantar Pemrograman Berorientasi Objek di Python

Konstruktor alternatif

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: # Baca baris pertama name = f.readline().strip() # Baca baris kedua sebagai integer salary = int(f.readline().strip())
return cls(name, salary)
  • Memungkinkan konstruktor alternatif
  • Hanya boleh ada satu __init__()

 

  • Gunakan metode kelas untuk membuat objek
  • Gunakan return untuk mengembalikan objek
  • cls(...) akan memanggil __init__(...)
Pengantar Pemrograman Berorientasi Objek di Python

Konstruktor alternatif

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

Berkas teks berisi nama John Smith dan gaji 40000

# Buat karyawan tanpa memanggil Employee()
emp = Employee.from_file("employee_data.txt")
print(emp.name)
John Smith
Pengantar Pemrograman Berorientasi Objek di Python

Kapan menggunakan metode kelas

  • Konstruktor alternatif

  • Metode yang tidak perlu atribut tingkat instance

  • Membatasi ke satu instance (objek) dari kelas

    • Koneksi basis data
    • Pengaturan konfigurasi
Pengantar Pemrograman Berorientasi Objek di Python

Ayo berlatih!

Pengantar Pemrograman Berorientasi Objek di Python

Preparing Video For Download...