Python memanggil fungsi kelas lain

Kami memiliki kelas yang disebut >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 2, yang mewarisi dari kelas lain, >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 3 (yang ada di modul >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 4 di pustaka standar Python)

from collections import Counter class FancyCounter(Counter): def commonest(self): (value1, count1), (value2, count2) = self.most_common(2) if count1 == count2: raise ValueError("No unique most common value") return value1

Cara kita mengetahui bahwa kita mewarisi dari kelas >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 3 karena ketika kita mendefinisikan >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 2, tepat setelah nama kelas kita meletakkan tanda kurung dan menulis >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 3 di dalamnya

Untuk membuat kelas yang mewarisi dari kelas lain, setelah nama kelas Anda akan meletakkan tanda kurung dan kemudian mencantumkan kelas apa saja yang diwarisi dari kelas Anda

Dalam definisi fungsi, tanda kurung setelah nama fungsi mewakili argumen yang diterima fungsi. Dalam definisi kelas, tanda kurung setelah nama kelas malah mewakili kelas yang diwarisi

Biasanya saat mempraktikkan pewarisan kelas dengan Python, kami mewarisi hanya dari satu kelas. Anda dapat mewarisi dari banyak kelas (itu disebut pewarisan berganda), tetapi ini agak jarang. Kami hanya akan membahas pewarisan kelas tunggal sekarang

Metode diwariskan dari kelas induk

Untuk menggunakan kelas >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") _2 kami, kami dapat menyebutnya (sama seperti kelas lainnya)

>>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!")

Kelas kami akan menerima string ketika kami memanggilnya karena kelas >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 3 telah menerapkan metode >>> letters FancyCounter({'e': 3, 'l': 2, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1}) 0 (metode penginisialisasi)

Kelas kami juga memiliki metode >>> letters FancyCounter({'e': 3, 'l': 2, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1}) _1 untuk representasi string yang bagus

>>> letters FancyCounter({'e': 3, 'l': 2, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1})

Ia bahkan memiliki banyak fungsi lain juga. Misalnya, ini telah menggantikan apa yang terjadi saat Anda menggunakan tanda kurung siku untuk menetapkan pasangan nilai kunci pada instance kelas

>>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2})

Kita dapat menetapkan key-value pair karena kelas induk kita, >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 3 membuat objek mirip kamus (a. k. a. )

Semua fungsi itu diwarisi dari kelas >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 3

Menambahkan fungsionalitas baru sambil mewarisi

Jadi kelas >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") _2 kami mewarisi semua fungsi yang dimiliki kelas >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 3 kami, tetapi kami juga memperluasnya dengan menambahkan metode tambahan, >>> letters FancyCounter({'e': 3, 'l': 2, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1}) 6, yang akan memberi kami item paling umum di kelas kami

Saat kita memanggil metode >>> letters FancyCounter({'e': 3, 'l': 2, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1}) 6, kita akan mendapatkan huruf >>> letters FancyCounter({'e': 3, 'l': 2, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1}) 8 (yang muncul tiga kali dalam string yang awalnya kita berikan ke objek >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 2 kita)

>>> letters.commonest() 'e'

Metode >>> letters FancyCounter({'e': 3, 'l': 2, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1}) _6 kami bergantung pada metode >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) 1, yang tidak kami definisikan tetapi kelas induk kami, >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 3, memang mendefinisikan

def commonest(self): (value1, count1), (value2, count2) = self.most_common(2) if count1 == count2: raise ValueError("No unique most common value") return value1

Kelas >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 2 kita memiliki metode >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) 4 karena kelas induk kita, >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 3 mendefinisikannya untuk kita

Mengesampingkan metode warisan

Jika kami ingin menyesuaikan apa yang terjadi saat kami menetapkan pasangan kunci-nilai di kelas ini, kami dapat melakukannya dengan mengganti metode >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) 6. Sebagai contoh, mari kita buat sehingga jika kita menetapkan kunci ke nilai negatif, itu malah menetapkannya ke >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) 7

Sebelumnya saat kami menugaskan >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) _8 ke >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) 9, kami ingin ini disetel ke >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) 7 alih-alih >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) 9 (ini >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) 9 di sini karena kami belum menyesuaikannya)

>>> letters['l'] = -2 >>> letters['l'] -2

Untuk menyesuaikan perilaku ini, kami akan membuat metode >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) 6 yang menerima >>> letters.commonest() 'e' 4, >>> letters.commonest() 'e' 5, dan >>> letters.commonest() 'e' 6 karena itulah yang >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) 6 diberikan oleh Python saat dipanggil

def __setitem__(self, key, value): value = max(0, value)

Metode >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) _6 di atas pada dasarnya mengatakan. jika >>> letters.commonest() 'e' _6 negatif, setel ke >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) 7

Jika kita berhenti menulis >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) _6 kita pada saat ini, itu tidak akan berguna. Sebenarnya metode >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) _6 itu tidak akan melakukan apa-apa sama sekali. itu tidak akan memberikan kesalahan, tetapi juga tidak akan melakukan apa-apa

Untuk melakukan sesuatu yang berguna, kita perlu memanggil metode >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) 6 kelas induk kita. Kita dapat memanggil metode ________13______6 kelas induk kita dengan menggunakan def commonest(self): (value1, count1), (value2, count2) = self.most_common(2) if count1 == count2: raise ValueError("No unique most common value") return value1 5

def __setitem__(self, key, value): value = max(0, value) return super().__setitem__(key, value)

Kami memanggil def commonest(self): (value1, count1), (value2, count2) = self.most_common(2) if count1 == count2: raise ValueError("No unique most common value") return value1 6, yang akan memanggil metode >>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) 6 di kelas induk kami (>>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 3) dengan >>> letters.commonest() 'e' 5 dan non-negatif baru kami >>> letters.commonest() 'e' 6

Inilah implementasi penuh dari versi baru kelas >>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") 2 kami ini

from collections import Counter class FancyCounter(Counter): def commonest(self): (value1, count1), (value2, count2) = self.most_common(2) if count1 == count2: raise ValueError("No unique most common value") return value1 def __setitem__(self, key, value): value = max(0, value) return super().__setitem__(key, value)

Untuk menggunakan kelas ini, kita akan memanggilnya dan mengirimkan string lagi

>>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!")

Namun kali ini, jika kita menetapkan kunci ke nilai negatif, kita akan melihat bahwa kunci tersebut akan ditetapkan ke>>> letters['l'] = -2 >>> letters FancyCounter({'e': 3, 'H': 1, 'o': 1, ' ': 1, 't': 1, 'h': 1, 'r': 1, '!': 1, 'l': -2}) 7 sebagai gantinya

>>> from fancy_counter import FancyCounter >>> letters = FancyCounter("Hello there!") _1

Latihan kelas untuk pemula tingkat lanjut

Ingin lebih banyak berlatih dengan kelas di Python?

Jalur latihan Diving Into Classes mencakup 6 latihan kelas untuk pemula tingkat lanjut. Python Morsels juga menyertakan lusinan latihan lainnya di kelas dan juga Python berorientasi objek

Bagaimana Anda memanggil fungsi dari kelas lain dengan Python?

Panggil metode dari kelas lain di kelas berbeda dengan Python. Kita dapat memanggil metode kelas lain dengan menggunakan nama kelas dan fungsinya dengan operator titik . Kemudian kita bisa memanggil method_A dari kelas B dengan cara berikut. kelas A. metode_A(diri sendiri). {} kelas B. metode_B(diri sendiri). A.

Bagaimana Anda memanggil fungsi dari kelas lain?

Di Java, sebuah metode dapat dipanggil dari kelas lain berdasarkan pengubah aksesnya . Misalnya, metode yang dibuat dengan pengubah publik dapat dipanggil dari dalam maupun luar kelas/paket. Metode yang dilindungi dapat dipanggil dari kelas lain menggunakan warisan.

Bisakah Anda memanggil kelas dari kelas lain Python?

Ya. Btw, Anda tidak memanggil kelas , Anda membuat instance kelas, di mana Anda kemudian dapat memanggil metodenya atau mengatur variabelnya. Untuk memeriksa tipe, atau memanggil metode statis, atau untuk mendapatkan variabel kelas, dapat dilakukan tanpa instance.

Bisakah saya memanggil fungsi di dalam fungsi lain di kelas Python yang sama?

Dengan Python, setiap fungsi tertulis dapat dipanggil oleh fungsi lain .

Postingan terbaru

LIHAT SEMUA