informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Daftar isi
1. Konsep pemrograman berorientasi objek (OOP)
1.1 Apa yang dimaksud dengan kelas dan objek?
1.3 Hubungan antara kelas dan objek
3.1 Definisi dan instantiasi kelas
7.2 Menggunakan introspeksi untuk operasi dinamis
8. Metode statis dan metode kelas
Pemrograman berorientasi objek (OOP) Merupakan paradigma pemrograman yang diimplementasikan dengan mengorganisasikan program ke dalam kumpulan objek. Objek tidak hanya berisi data tetapi juga metode untuk memanipulasi data tersebut. Konsep inti OOP mencakup kelas, objek, properti, dan metode.
- Kelas Merupakan template atau cetak biru yang digunakan untuk membuat objek. Kelas mendefinisikan properti dan perilaku objek.
- Obyek Merupakan turunan dari kelas. Membuat objek adalah membuat instance tertentu berdasarkan kelasnya.
contoh:
- class Dog:
- # 类的初始化方法
- def __init__(self, name, age):
- self.name = name # 属性
- self.age = age # 属性
-
- # 方法
- def bark(self):
- return f"{self.name} says Woof!"
-
- # 创建对象
- my_dog = Dog("Rex", 5)
- print(my_dog.bark())
Di Python, kelas lulus class
Definisi kata kunci. Fungsi dalam suatu kelas disebut metode dan variabel disebut properti.Metode kelas biasanya dimulai denganself
Sebagai parameter pertama, mewakili instance itu sendiri.
contoh:
- class Cat:
- def __init__(self, name):
- self.name = name
-
- def meow(self):
- return f"{self.name} says Meow!"
-
- # 创建对象
- my_cat = Cat("Whiskers")
- print(my_cat.meow())
Kelas adalah templat untuk suatu objek dan mendefinisikan struktur dan perilaku objek. Objek adalah turunan dari kelas, dan setiap objek memiliki properti dan metode independen.
- class Person:
- def __init__(self, name, age):
- self.name = name
- self.age = age
-
- def greet(self):
- return f"Hello, my name is {self.name} and I am {self.age} years old."
-
- # 创建多个对象
- person1 = Person("Alice", 30)
- person2 = Person("Bob", 25)
-
- print(person1.greet())
- print(person2.greet())
Kelas itu seperti cetakan kue, kelas menentukan bentuk dan ukuran kue. Benda ibarat kue beton yang terbuat dari cetakan. Setiap kue dapat mempunyai rasa (sifat) yang berbeda, namun bentuk dan ukuran (struktur dan perilakunya) sama.
abstrak Hal ini mengacu pada penyederhanaan permasalahan dunia nyata yang kompleks dengan memanfaatkan fitur-fitur utama dan mengabaikan detailnya. Dalam pemrograman, abstraksi membantu kita membuat kode yang lebih ringkas dan mudah dipelihara.
Abstraksi adalah tentang mengekstraksi fitur utama suatu objek sambil mengabaikan detail yang tidak penting. Melalui abstraksi, kita dapat fokus pada fungsi inti suatu objek tanpa terganggu oleh fitur sekunder.
contoh:
- class Animal:
- def __init__(self, name):
- self.name = name
-
- def make_sound(self):
- pass # 抽象方法,不具体实现
-
- class Dog(Animal):
- def make_sound(self):
- return "Woof!"
-
- class Cat(Animal):
- def make_sound(self):
- return "Meow!"
-
- # 创建对象
- dog = Dog("Rex")
- cat = Cat("Whiskers")
-
- print(dog.make_sound())
- print(cat.make_sound())
Di Python, kita dapat mencapai abstraksi dengan mendefinisikan kelas abstrak dan metode abstrak. Kelas abstrak tidak dapat dipakai, hanya diwariskan. Metode abstrak didefinisikan di kelas abstrak tetapi diimplementasikan di subkelas.
contoh:
- from abc import ABC, abstractmethod
-
- class Vehicle(ABC):
- @abstractmethod
- def start_engine(self):
- pass
-
- class Car(Vehicle):
- def start_engine(self):
- return "Car engine started"
-
- class Motorcycle(Vehicle):
- def start_engine(self):
- return "Motorcycle engine started"
-
- # 创建对象
- car = Car()
- motorcycle = Motorcycle()
-
- print(car.start_engine())
- print(motorcycle.start_engine())
Abstraksi seperti mereduksi lukisan kompleks menjadi bentuk geometris. Misalnya kucing tertentu memiliki banyak ciri (warna bulu, ukuran, umur, dll), namun kita hanya fokus pada ciri mengeong. Ini adalah abstraksi kucing.
Kelas dan instance Ini adalah dasar dari OOP. Kelas adalah template dan instance adalah objek konkrit. Instance dibuat dari suatu kelas dan memiliki properti serta metode yang ditentukan oleh kelas tersebut.
Mendefinisikan kelas dan membuat sebuah instance adalah operasi dasar OOP. Kelas mendefinisikan properti dan metode, dan instance adalah objek konkret kelas.
contoh:
- class Student:
- def __init__(self, name, grade):
- self.name = name
- self.grade = grade
-
- def introduce(self):
- return f"Hi, I am {self.name} and I am in grade {self.grade}."
-
- # 创建实例
- student1 = Student("Alice", 10)
- student2 = Student("Bob", 12)
-
- print(student1.introduce())
- print(student2.introduce())
Atribut suatu kelas adalah keadaan objeknya, dan metodenya adalah perilaku objeknya.Atribut kelas lulus__init__
Inisialisasi metode, metode didefinisikan di kelas.
contoh:
- class Book:
- def __init__(self, title, author):
- self.title = title
- self.author = author
-
- def get_info(self):
- return f"'{self.title}' by {self.author}"
-
- # 创建实例
- book = Book("1984", "George Orwell")
- print(book.get_info())
Kelas dan contoh seperti gambar sebuah rumah dan rumah sebenarnya. Gambar (kelas) menjelaskan struktur dan fungsi rumah, sedangkan rumah sebenarnya (contoh) adalah benda beton yang dibangun sesuai gambar.
enkapsulasi Itu menyembunyikan status objek (properti) dan perilaku (metode) di dalam kelas dan berinteraksi dengan dunia luar melalui antarmuka (metode). Enkapsulasi meningkatkan keamanan dan pemeliharaan kode.
Enkapsulasi adalah salah satu konsep inti OOP. Enkapsulasi ini melindungi data objek dengan menyembunyikan keadaan internal objek dan hanya menampilkan antarmuka yang diperlukan. Dengan cara ini, kode eksternal tidak dapat secara langsung mengakses atau mengubah keadaan internal objek, dan hanya dapat memanipulasi data melalui metode yang disediakan oleh objek tersebut.
contoh:
- class Account:
- def __init__(self, owner, balance=0):
- self.owner = owner
- self.__balance = balance # 私有属性
-
- def deposit(self, amount):
- if amount > 0:
- self.__balance += amount
- else:
- raise ValueError("Deposit amount must be positive")
-
- def withdraw(self, amount):
- if 0 < amount <= self.__balance:
- self.__balance -= amount
- else:
- raise ValueError("Insufficient funds or invalid amount")
-
- def get_balance(self):
- return self.__balance
-
- # 创建实例
- account = Account("John")
- account.deposit(100)
- print(account.get_balance())
Antarmuka adalah satu-satunya cara suatu objek berinteraksi dengan dunia luar. Melalui antarmuka, kode eksternal dapat memanggil metode objek tetapi tidak dapat mengakses keadaan internal objek secara langsung.
contoh:
- class Car:
- def __init__(self, model):
- self.model = model
- self.__engine_started = False
-
- def start_engine(self):
- if not self.__engine_started:
- self.__engine_started = True
- return "Engine started"
- else:
- return "Engine is already running"
-
- def stop_engine(self):
- if self.__engine_started:
- self.__engine_started = False
- return "Engine stopped"
- else:
- return "Engine is not running"
-
- # 创建实例
- car = Car("Toyota")
- print(car.start_engine())
- print(car.stop_engine())
Kemasannya seperti casing ponsel. Sirkuit dan komponen (keadaan objek) di dalam ponsel dikemas dalam casing. Pengguna hanya dapat berinteraksi dengan ponsel melalui tombol dan layar (antarmuka), tetapi tidak dapat langsung menghubungi komponen internal.
mewarisi Merupakan konsep inti lain dari OOP, yang memungkinkan kita membuat kelas baru berdasarkan kelas yang sudah ada. Kelas baru mewarisi semua properti dan metode dari kelas yang ada.
Warisan adalah ketika satu kelas (subkelas) memperoleh properti dan metode dari kelas lain (kelas induk). Melalui pewarisan, subkelas dapat menggunakan kembali kode kelas induk, menambahkan properti dan metode baru, atau mengganti metode kelas induk.
contoh:
- class Animal:
- def __init__(self, name):
- self.name = name
-
- def speak(self):
- pass
-
- class Dog(Animal):
- def speak(self):
- return "Woof!"
-
- class Cat(Animal):
- def speak(self):
- return "Meow!"
-
- # 创建实例
- dog = Dog("Rex")
- cat = Cat("Whiskers")
-
- print(dog.speak())
- print(cat.speak())
Subkelas dapat mengganti metode kelas induk, yaitu mendefinisikan metode dengan nama yang sama dengan kelas induk di subkelas untuk mencapai fungsi yang berbeda.
contoh:
- class Shape:
- def area(self):
- return 0
-
- class Rectangle(Shape):
- def __init__(self, width, height):
- self.width = width
- self.height = height
-
- def area(self):
- return self.width * self.height
-
- class Circle(Shape):
- def __init__(self, radius):
- self.radius = radius
-
- def area(self):
- return 3.14 * (self.radius ** 2)
-
- # 创建实例
- rectangle = Rectangle(3, 4)
- circle = Circle(5)
-
- print(rectangle.area())
- print(circle.area())
Warisan itu seperti warisan yang diberikan orang tua kepada anaknya. Orang tua (kelas induk) mewariskan properti mereka (properti dan metode) kepada anak-anak mereka (subkelas), dan anak-anak tidak hanya dapat menggunakan properti ini, tetapi juga menjadi lebih kaya melalui usaha mereka sendiri (menambahkan properti dan metode baru).
Polimorfisme Artinya metode yang sama mempunyai manifestasi yang berbeda pada objek yang berbeda. Polimorfisme memungkinkan kita memanggil metode objek berbeda melalui antarmuka yang sama untuk mencapai fungsi berbeda.
Polimorfisme adalah salah satu fitur penting OOP. Ini menunjuk ke objek subkelas melalui referensi kelas induk, memungkinkan metode yang sama memiliki implementasi berbeda. Polimorfisme meningkatkan fleksibilitas dan skalabilitas kode.
contoh:
- class Animal:
- def speak(self):
- pass
-
- class Dog(Animal):
- def speak(self):
- return "Woof!"
-
- class Cat(Animal):
- def speak(self):
- return "Meow!"
-
- def animal_sound(animal):
- print(animal.speak())
-
- # 创建实例
- dog = Dog()
- cat = Cat()
-
- animal_sound(dog)
- animal_sound(cat)
Dalam Python, polimorfisme biasanya diimplementasikan melalui penggantian metode dan referensi kelas induk. Dengan menunjuk ke objek subkelas melalui referensi kelas induk, Anda bisa memanggil metode subkelas.
contoh:
- class Shape:
- def draw(self):
- pass
-
- class Rectangle(Shape):
- def draw(self):
- return "Drawing a rectangle"
-
- class Circle(Shape):
- def draw(self):
- return "Drawing a circle"
-
- def draw_shape(shape):
- print(shape.draw())
-
- # 创建实例
- rectangle = Rectangle()
- circle = Circle()
-
- draw_shape(rectangle)
- draw_shape(circle)
Polimorfisme seperti remote control universal. Baik itu mengontrol TV, AC, atau stereo, selama perangkat ini memiliki antarmuka (metode) yang sesuai, remote control (referensi kelas induk) dapat mengimplementasikan fungsi yang berbeda melalui tombol yang sama (panggilan metode).
introspeksi Artinya objek dapat mengetahui informasinya sendiri pada saat runtime. Python menyediakan beberapa fungsi bawaan untuk introspeksi, sepertitype()
、id()
、hasattr()
Tunggu.
Introspeksi berarti suatu objek dapat memperoleh informasinya sendiri saat runtime, seperti properti, metode, dll. Introspeksi membuat program Python sangat dinamis dan fleksibel.
contoh:
- class Person:
- def __init__(self, name, age):
- self.name = name
- self.age = age
-
- person = Person("Alice", 30)
-
- # 使用内置函数进行自省
- print(type(person))
- print(hasattr(person, "name"))
- print(getattr(person, "name"))
- setattr(person, "name", "Bob")
- print(person.name)
- delattr(person, "name")
Melalui introspeksi, kita dapat memanipulasi properti dan metode objek secara dinamis saat runtime, menjadikan program lebih fleksibel dan dinamis.
contoh:
- class Car:
- def __init__(self, model):
- self.model = model
- self.speed = 0
-
- def accelerate(self):
- self.speed += 5
- return self.speed
-
- car = Car("Toyota")
-
- # 动态操作对象
- if hasattr(car, "accelerate"):
- method = getattr(car, "accelerate")
- print(method())
- print(method())
-
- # 动态设置属性
- setattr(car, "color", "red")
- print(car.color)
Introspeksi diri itu seperti bercermin. Melalui cermin (mekanisme introspeksi), manusia dapat melihat seperti apa dirinya (sifat dan metode objek) dan melakukan penyesuaian sesuai kebutuhan (manipulasi objek secara dinamis).
metode statis Danmetode kelas adalah metode yang terkait dengan kelas, bukan instance.Penggunaan metode statis@staticmethod
Dekorator, penggunaan metode kelas@classmethod
Penghias.
Metode statis adalah metode suatu kelas, tetapi tidak terikat pada instance kelas mana pun. Metode statis tidak dapat mengakses instance suatu kelas, juga tidak dapat mengubah status kelas. Mereka biasanya digunakan untuk melakukan beberapa operasi yang tidak ada hubungannya dengan kelas, tetapi secara logis milik fungsionalitas kelas.
contoh:
- class Math:
- @staticmethod
- def add(a, b):
- return a + b
-
- print(Math.add(5, 3))
Metode kelas adalah metode yang terikat pada kelas, bukan pada instance.Argumen pertama pada metode kelas adalah kelas itu sendiri, biasanya diberi namacls
. Metode kelas dapat mengakses properti kelas dan metode kelas lainnya.
contoh:
- class Math:
- factor = 2
-
- @classmethod
- def multiply(cls, value):
- return cls.factor * value
-
- print(Math.multiply(5))
Semua aspek pemrograman berorientasi objek dengan Python, termasuk konsep dasar pemrograman berorientasi objek, abstraksi, kelas dan instance, enkapsulasi, pewarisan, polimorfisme, introspeksi, serta metode statis dan kelas.
Saya harap blog mendetail ini dapat membantu Anda memahami lebih dalam pemrograman berorientasi objek dengan Python dan menerapkan pengetahuan ini dalam proyek nyata. Jika Anda memiliki pertanyaan atau memerlukan bantuan lebih lanjut, jangan ragu untuk menghubungi saya!