Saya mencoba belajar python dan sekarang saya mencoba memahami kelas dan bagaimana memanipulasi mereka dengan instance.
Saya sepertinya tidak mengerti masalah latihan ini:
Membuat dan mengembalikan objek siswa yang nama, usia, dan jurusannya sama dengan yang diberikan sebagai input
def make_student(name, age, major)
Saya hanya tidak mengerti apa yang dimaksud dengan objek, apakah maksudnya saya harus membuat array di dalam fungsi yang menyimpan nilai-nilai ini? atau buat kelas dan biarkan fungsi ini ada di dalamnya, dan tetapkan instance? (sebelum pertanyaan ini saya diminta untuk membuat kelas siswa dengan nama, umur, dan jurusan di dalamnya)
class Student:
name = "Unknown name"
age = 0
major = "Unknown major"
__init__
metode ini relevan di sini: docs.python.org/2/reference/datamodel.html#object.__init__Jawaban:
Perhatikan bahwa meskipun salah satu prinsip dalam filsafat Python adalah "harus ada satu - dan lebih disukai hanya satu - cara yang jelas untuk melakukannya" , masih ada banyak cara untuk melakukan ini. Anda juga dapat menggunakan dua cuplikan kode berikut untuk memanfaatkan kapabilitas dinamis Python:
Saya lebih suka yang pertama, tetapi ada beberapa contoh di mana yang terakhir bisa berguna - yang ketika bekerja dengan database dokumen seperti MongoDB.
sumber
class Unicorn
danhas_hooves = True
bukannyaname = ""
.Buat kelas dan berikan
__init__
metode:Sekarang, Anda dapat menginisialisasi instance
Student
kelas:Meskipun saya tidak yakin mengapa Anda memerlukan
make_student
fungsi siswa jika melakukan hal yang samaStudent.__init__
.sumber
Objek adalah turunan dari kelas. Kelas hanyalah cetak biru untuk objek. Jadi, berikan definisi kelas Anda -
Anda dapat membuat
make_student
fungsi dengan menetapkan atribut secara eksplisit ke instance baruStudent
-Tapi mungkin lebih masuk akal untuk melakukan ini di constructor (
__init__
) -Konstruktor dipanggil saat Anda menggunakan
Student()
. Itu akan mengambil argumen yang didefinisikan dalam__init__
metode ini. Tanda tangan konstruktor sekarang pada dasarnya akanStudent(name, age, major)
.Jika Anda menggunakannya, maka
make_student
fungsi itu sepele (dan berlebihan) -Untuk bersenang-senang, berikut adalah contoh cara membuat
make_student
fungsi tanpa mendefinisikan kelas. Tolong jangan coba ini di rumah.sumber
__init__()
metode berbeda dari konstruktor?__init__
bukan konstruktor, "karena objek sudah dibangun pada saat__init__
dipanggil, dan Anda sudah memiliki referensi yang valid ke instance baru kelas." ( diveintopython.net/object_oriented_framework/… )ketika Anda membuat objek menggunakan kelas yang telah ditentukan, pada awalnya Anda ingin membuat variabel untuk menyimpan objek itu. Kemudian Anda bisa membuat objek dan menyimpan variabel yang Anda buat.
Sebenarnya metode init ini adalah konstruktor dari class. Anda dapat menginisialisasi metode tersebut menggunakan beberapa atribut .. Pada titik itu, ketika Anda membuat objek, Anda harus memberikan beberapa nilai untuk atribut tertentu ..
sumber