Python Academy · Pelajaran

Kaedah Contoh dan self

Tulis kaedah yang beroperasi pada data milik objek itu sendiri.

Pelajaran 3 daripada 414 langkah

Kaedah Contoh dan self ialah pelajaran Python Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Python Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Pengenalan

Kaedah instans beroperasi pada data objek tertentu dengan menggunakan self untuk mengakses dan mengubah suai atributnya.

Mentakrifkan Kaedah Instans

def method(self): di dalam kelas ialah kaedah instans. Ia menerima objek sebagai argumen pertama (self).
class Circle:
    def __init__(self, r): self.r = r
    def area(self):
        import math
        return math.pi * self.r**2
print(Circle(5).area())

Memanggil Kaedah

obj.method() ialah cara ringkas bagi ClassName.method(obj). Python menghantar obj sebagai self secara automatik.
class Dog:
    def __init__(self, name): self.name = name
    def bark(self): print(f'{self.name} says Woof!')
Dog('Rex').bark()

Kaedah yang Mengembalikan self

Pemulangan self membolehkan rantaian kaedah: builder.set_name('x').set_age(3).build().
class Builder:
    def __init__(self): self.data = {}
    def set(self, k, v):
        self.data[k] = v
        return self
    def build(self): return self.data
result = Builder().set('x',1).set('y',2).build()
print(result)

Kaedah Persendirian (Konvensyen)

Letakkan awalan _ untuk menandakan 'kegunaan dalaman'. Awalan __ mencetuskan pengubahan nama: _ClassName__method.
class Account:
    def __init__(self, bal): self._bal = bal
    def _validate(self, amount): return amount > 0
    def deposit(self, amount):
        if self._validate(amount):
            self._bal += amount
a = Account(100)
a.deposit(50)
print(a._bal)

Property sebagai Kaedah

@property menukarkan kaedah menjadi atribut yang mudah dibaca. Tanda kurung tidak diperlukan semasa mengaksesnya.
class Circle:
    def __init__(self, r): self.r = r
    @property
    def diameter(self): return self.r * 2
c = Circle(5)
print(c.diameter)  # no ()

Mengubah Keadaan

Kaedah yang mengubah atribut self akan mengubah keadaan objek. Reka bentuk kaedah dengan niat yang jelas: pertanyaan berbanding perintah.
class Stack:
    def __init__(self): self.items = []
    def push(self, x): self.items.append(x)
    def pop(self): return self.items.pop()
    def peek(self): return self.items[-1]
s = Stack()
s.push(1); s.push(2)
print(s.pop(), s.peek())

Membandingkan Objek

Secara lalai, == membandingkan identiti. Laksanakan __eq__ untuk membandingkan berdasarkan nilai.
class Point:
    def __init__(self, x, y): self.x,self.y=x,y
    def __eq__(self, other): return self.x==other.x and self.y==other.y
print(Point(1,2)==Point(1,2))

Protokol Lelaran

Laksanakan __iter__ dan __next__ supaya kelas boleh diiterasi — dan digunakan dalam gelung for.
class Countdown:
    def __init__(self, n): self.n = n
    def __iter__(self): return self
    def __next__(self):
        if self.n <= 0: raise StopIteration
        self.n -= 1; return self.n + 1
print(list(Countdown(3)))

Protokol Pengurus Konteks

Laksanakan __enter__ dan __exit__ supaya kelas boleh digunakan dalam pernyataan with.
class Timer:
    def __enter__(self):
        import time
        self.start = time.time()
        return self
    def __exit__(self, *args):
        import time
        print(f'elapsed: {time.time()-self.start:.3f}s')
with Timer(): pass

Kaedah berbanding Fungsi

Apabila diakses melalui kelas, Dog.bark ialah fungsi biasa. Melalui instans, d.bark ialah kaedah terikat — self telah diisi terlebih dahulu.
class Dog:
    def bark(self): print('woof')
print(type(Dog.bark))
print(type(Dog().bark))

Semakan Pantas

Apakah itu rantaian kaedah dan apakah yang mesti dipulangkan oleh kaedah untuk menyokongnya?

Ulang Kaji

Kaedah instans: def m(self). Panggil sebagai obj.m(). Pulangkan self untuk rantaian. __eq__/__iter__/__enter__/__exit__ melaksanakan protokol. Awalan _ menandakan kegunaan dalaman.

Teruskan

Cemerlang! Teruskan ke pelajaran seterusnya untuk memperdalam kemahiran anda.
Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
76
Pelajaran
320

Soalan Lazim

Adakah pelajaran “Kaedah Contoh dan self” percuma?

Ya — teks penuh “Kaedah Contoh dan self” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Python Academy, tingkat taraf kepada CoddyKit PRO. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Kaedah Contoh dan self”?

Tulis kaedah yang beroperasi pada data milik objek itu sendiri. Anda berlatih Python Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Python Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Python Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Kaedah Contoh dan self” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Kelas dan Kaedah __init__
  2. Atribut Contoh berbanding Atribut Kelas
  3. Kaedah Contoh dan self
  4. Kaedah Ajaib: __str__ dan __repr__
← Kembali ke Python Academy