Penimpaan Method
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Python di Coddy. Pelajaran 19 dari 64.
Method overriding memungkinkan class turunan menyediakan implementasinya sendiri untuk method yang sudah ada di class induk.
Berikut contoh parent class dengan method:
class Animal:
def __init__(self, name):
self.name = name
def make_sound(self):
print("Some generic animal sound")
def info(self):
print(f"I am {self.name}")Buat class turunan yang menimpa satu method:
class Dog(Animal):
def make_sound(self):
print("Woof! Woof!") # Ganti method indukmethod make_sound di Dog menggantikan method yang berasal dari Animal, tetapi info tetap diwarisi tanpa perubahan.
Buat instance dan uji method-nya:
animal = Animal("Generic Animal")
dog = Dog("Buddy")Panggil method yang dioverride:
animal.make_sound()
dog.make_sound()Panggil method yang tidak di-override:
animal.info()
dog.info()Output:
Some generic animal sound
Woof! Woof!
I am Generic Animal
I am BuddyKamu dapat mengganti method apa pun yang diwarisi:
class Cat(Animal):
def make_sound(self):
print("Meow!")
def info(self):
print(f"I am {self.name}, a sneaky cat")
cat = Cat("Whiskers")
cat.make_sound()
cat.info()Output:
Meow!
I am Whiskers, a sneaky catPoin penting: Method overriding memungkinkan class turunan menyesuaikan perilaku yang diwarisi. Cukup definisikan method dengan nama yang sama di class turunan. Versi milik class turunan akan digunakan sebagai pengganti versi milik class induk.
Tantangan
SedangDalam tantangan ini, kamu akan mengimplementasikan hierarki shape.
shape.py- Berisi class indukShapedengan atributcolordan methodcircle.py- Berisi classCircleyang mewarisiShapesquare.py- Berisi classSquareyang mewarisiShape
Setiap file berisi komentar TODO terperinci yang akan memandumu langkah demi langkah dalam implementasi.
Coba sendiri
from shape import Shape
from circle import Circle
from square import Square
# Penangan kasus uji
test_case = input()
if test_case == "base_shape":
# Uji class dasar Shape
shape = Shape("green")
print(f"Color: {shape.color}")
print(f"Area: {shape.area()}")
print("Describe output:")
shape.describe()
elif test_case == "circle_basics":
# Uji pembuatan Circle dan method dasarnya
circle = Circle("red", 5)
print(f"Color: {circle.color}")
print(f"Radius: {circle.radius}")
print(f"Area (rounded): {round(circle.area(), 2)}")
print("Describe output:")
circle.describe()
elif test_case == "square_basics":
# Uji pembuatan Square dan method dasarnya
square = Square("blue", 4)
print(f"Color: {square.color}")
print(f"Side length: {square.side_length}")
print(f"Area: {square.area()}")
print("Describe output:")
square.describe()
elif test_case == "various_sizes":
# Uji beberapa instance dengan ukuran berbeda
shapes = [
Circle("yellow", 2),
Circle("orange", 7.5),
Square("purple", 3),
Square("black", 10)
]
for i, shape in enumerate(shapes, 1):
print(f"Shape {i}:")
shape.describe()
print(f"Area: {round(shape.area(), 2)}")
print() # Baris kosong agar mudah dibaca
elif test_case == "shape_polymorphism":
# Uji perilaku polimorfik dengan list bentuk
shapes = [
Shape("white"),
Circle("red", 3),
Square("blue", 4)
]
print("Polymorphic behavior demonstration:")
for shape in shapes:
shape.describe()
print(f"Area: {round(shape.area(shape_polymorphism), 2)}")
print() # Baris kosong agar mudah dibaca
elif test_case == "original_test_case":
# Jalankan kode pengujian asli dari tantangan
circle = Circle("red", 5)
square = Square("blue", 4)
# Uji method describe
circle.describe()
square.describe()
# Uji method area
print(f"Circle area: {circle.area()}")
print(f"Square area: {square.area()}")Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPclass vs objectParameter selfmethodAtributMethod Konstruktor (__init__)Rangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan DasarFungsi super()Penimpaan MethodPewarisan BergandaUrutan Resolusi MethodRingkasan: Hierarki Karyawan5Polimorfisme
Meninjau Ulang Method OverridingDuck Typingclass dan method AbstrakDesain InterfaceRingkasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanMixinsMetode Statis dan Metode ClassDecorator ClassPengelola Konteks11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola Composite3Property class
Variabel instance vs variabel classDekorator propertyAtribut privatRangkuman: Pengelola Rekening Bank6Enkapsulasi
Anggota Public, Protected, PrivateModifier AksesPenyembunyian InformasiDecorator Property Tingkat LanjutUlasan: Sistem Catatan Siswa12Proyek: Manajemen Perpustakaan
Ikhtisar Proyekclass Buku dan PenggunaSistem PeminjamanFitur PencarianAntarmuka AdminPengujian dan IntegrasiLatihan sendiri: Compiler Python online