Mari berkelas: cara membuat modul dan kelas dengan Python

Dalam bahasa komputer berorientasi objek seperti Python, kelas pada dasarnya adalah templat untuk membuat objek Anda sendiri. Objek merupakan enkapsulasi variabel dan fungsi menjadi satu kesatuan. Objek mendapatkan variabel dan fungsinya dari kelas.

Katakan apa?

Berikut beberapa contoh yang akan membantu Anda memahami - baca terus. Ada juga shell kode interaktif, cukup tekan tombol "Run" di bagian atas jendela tertentu.

Cara paling sederhana untuk mendeskripsikan kelas dan cara menggunakannya adalah ini:

Bayangkan Anda memiliki kekuatan yang besar. Anda membuat spesies ("kelas").

Kemudian Anda membuat atribut untuk spesies itu ("properti") - tinggi, berat, anggota badan, warna, kekuatan, dan seterusnya.

Kemudian Anda membuat instance dari spesies itu - Fido si anjing, Drogon dari Game of Thrones, dan seterusnya. Kemudian Anda bekerja dengan contoh berikut:

  • Dalam sebuah permainan, misalnya, mereka akan terlibat dalam aksi, berinteraksi, menggunakan atribut mereka.
  • Di aplikasi perbankan, mereka akan menjadi transaksi yang berbeda.
  • Dalam aplikasi beli / jual / jual / jual / sewa kendaraan, kelas kendaraan tersebut dapat memunculkan sub-kelas seperti mobil. Masing-masing memiliki atribut seperti jarak tempuh, opsi, fitur, warna, dan trim.

Anda sudah dapat melihat mengapa ini berguna. Anda membuat, menggunakan kembali, mengadaptasi, dan menyempurnakan item dengan cara yang sangat efisien, logis, dan berguna.

Sekarang, Anda mungkin telah menyadari bahwa ini adalah cara untuk mengklasifikasikan dan mengelompokkan, yang serupa dengan cara manusia belajar:

  • Hewan adalah makhluk hidup yang pada dasarnya bukan manusia atau pohon
  • lalu Anda beralih ke berbagai jenis hewan - anjing, kucing mungkin adalah hewan pertama yang paling kita pelajari
  • lalu Anda pindah ke atribut hewan yang berbeda - bentuk, ukuran, suara, pelengkap, dan sebagainya.

Misalnya, ketika Anda masih kecil, pemahaman pertama Anda tentang seekor anjing mungkin adalah sesuatu dengan empat kaki yang menggonggong. Kemudian Anda belajar membedakan bahwa beberapa adalah anjing asli, yang lainnya adalah mainan. Bahwa konsep "anjing" ini mengandung banyak jenis.

Membuat dan menggunakan kelas pada dasarnya:

  • membuat template untuk memasukkan "sesuatu" - klasifikasi
  • yang kemudian dapat dioperasikan. Misalnya, menarik semua orang dengan anjing yang dapat Anda minta untuk ditautkan ke blog tentang hewan peliharaan, atau semua klien bank yang mungkin merupakan prospek bagus untuk mendapatkan kartu kredit baru.

Poin utama di sini adalah kelas adalah objek yang dapat menghasilkan contoh template tersebut, di mana operasi dan metode dapat diterapkan. Ini adalah cara terbaik untuk membuat konsep, mengatur, dan membangun hierarki untuk organisasi atau proses apa pun.

Saat dunia kita semakin kompleks, ini adalah cara untuk meniru kompleksitas itu dari perspektif hierarki. Ini juga membangun pemahaman yang lebih dalam tentang proses dan interaksi untuk bisnis, teknis, dan pengaturan sosial dari titik teknologi informasi virtual.

Contohnya mungkin video game yang Anda buat. Setiap karakter bisa menjadi "kelas", dengan atributnya sendiri, yang berinteraksi dengan instance kelas lain. Raja George dari kelas "Raja" mungkin berinteraksi dengan Pelawak Pengadilan dari kelas "Badut", dan seterusnya. Seorang Raja mungkin memiliki kelas "pelayan" kerajaan, dan kelas "pelayan" akan selalu memiliki kelas "Raja", misalnya.

Inilah yang akan kami lakukan:

  • buat kelas dan gunakan itu
  • buat modul dan pindahkan pembuatan dan inisiasi kelas ke modul
  • panggil modul dalam program baru untuk menggunakan kelas

Kode tersedia di GitHub di sini.

#TSB - Create Class in Python - rocket positions (x,y) and graph
#some items and comments bolded to call attention to processimport matplotlib.pyplot as plt
class Rocket(): def __init__(self, x=0, y=0): #each rocket has (x,y) position; user or calling function has choice #of passing in x and y values, or by default they are set at 0 self.x = x self.y = y def move_up(self): self.y += 1 def move_down(self): self.y -= 1 def move_right(self): self.x += 1 def move_left(self): self.x -= 1
#Make a series of rockets - x,y positions, I am calling it rocketrockets=[]rockets.append(Rocket())rockets.append(Rocket(0,2))rockets.append(Rocket(1,4))rockets.append(Rocket(2,6))rockets.append(Rocket(3,7))rockets.append(Rocket(5,9))rockets.append(Rocket(8, 15)) #Show on a graph where each rocket is
for index, rocket in enumerate(rockets): #original position of rockets print("Rocket %d is at (%d, %d)." % (index, rocket.x, rocket.y)) plt.plot(rocket.x, rocket.y, 'ro', linewidth=2, linestyle="dashed", markersize=12) #move the 'rocket' one up rocket.move_up() print("New Rocket position %d is at (%d, %d)." % (index, rocket.x, rocket.y)) #plot the new position plt.plot(rocket.x, rocket.y, 'bo', linewidth=2, linestyle="dashed", markersize=12) #move the rocket left, then plot the new position rocket.move_left() plt.plot(rocket.x, rocket.y, 'yo', linewidth=2, linestyle="dashed", markersize=12)
#show graph legend to match colors with positionplt.gca().legend(('original position','^ - Moved up', '< - Moved left'))plt.show()#plt.legend(loc='upper left')

Sekarang mari kita buat modul dan pindahkan beberapa kode di atas ke modul. Setiap kali kita perlu membuat kumpulan koordinat x, y yang sederhana ini dalam program apa pun, kita dapat menggunakan modul untuk melakukannya.

Apa itu modul dan mengapa kita membutuhkannya?

A module is a file containing Python definitions and statements. Module is Python code that can be called from other programs for commonly used tasks, without having to type them in each and every program that uses them.

For example, when you call “matplotlib.plot”, you are calling a package module. If you didn’t have this module you would have to define the plot functionality in every program that used a plot graph.

From the Python documentation:

Jika Anda keluar dari interpreter Python dan memasukkannya lagi, definisi yang Anda buat (fungsi dan variabel) akan hilang. Oleh karena itu, jika Anda ingin menulis program yang lebih panjang, Anda lebih baik menggunakan editor teks untuk menyiapkan masukan untuk penerjemah dan menjalankannya dengan file itu sebagai masukan. Ini dikenal sebagai membuat skrip. Saat program Anda semakin panjang, Anda mungkin ingin membaginya menjadi beberapa file untuk memudahkan pemeliharaan. Anda mungkin juga ingin menggunakan fungsi praktis yang telah Anda tulis di beberapa program tanpa menyalin definisinya ke setiap program. Untuk mendukung ini, Python memiliki cara untuk meletakkan definisi dalam file dan menggunakannya dalam skrip atau dalam contoh interaktif dari penerjemah. File seperti itu disebut modul;definisi dari modul dapat diimpor ke modul lain atau ke modul utama (kumpulan variabel yang Anda miliki aksesnya dalam skrip yang dijalankan di tingkat atas dan dalam mode kalkulator).

Here’s our simple module. It takes the class creation and the functions to move an instance of that class from the program above and into its own class. We will then use this in a new program simply by calling and referencing this module:

Notice what we did above:

  • created and initialized the class
  • created a function to move an instance of the class in the four major directions (up, down, right, left) and the increments — as parameters, or arguments to the function
  • created another function to calculate the distance between two instances of the class, using the graph distance formula

Here’s how we will use the new module to re-write the same program from the first part. Notice in the import section at the beginning, we now import the simple_module1 module that we just created:

Here’s the output from the code using our module. Note that they are the same, except for the chart title and the shape of the position markers, which I changed for comparative purposes.

That’s great, you may say — what are some other uses for this? One classic example is a bank account. A customer class might contain the name and contact details and — more importantly — the account class would have deposit and withdrawal elements.

This is grossly oversimplified but, for illustrative purposes, it is useful. That’s it — create a template, then define instances of that template with details (properties), and add value by adding, subtracting, modifying, moving, and using these instances for your program objectives.

Still wondering about classes? Ok, let’s get “classy” — here’s another simple illustration. We will call this class “Person”. It has only two properties — name and age. We will then add an instance of this with a person’s name and age, and print it. Depending on what your objective is, you can imagine all the other details you might add — for example, marital status and location preferences for a social networking app, job experience in years and industry specialization for a career related app. Press the little triangle below to see it work.

So there you have it. You can create many different classes, with parent classes, sub-classes and so on. Thanks for reading — please clap if you liked it. Here are some other references if you would like to learn more:

  • Python documentation — Classes
  • Python Object Oriented — Tutorials Point
  • Classes and Objects — learnpython.org