Legyen klassz: hogyan hozhatunk létre modulokat és osztályokat a Python segítségével

Az objektumorientált számítógépes nyelvekben, például a Pythonban, az osztályok alapvetően sablonok a saját objektumok létrehozásához. Az objektumok a változók és a funkciók egyetlen entitásba foglalása. Az objektumok változóikat és függvényeiket az osztályoktól kapják.

Mondd mi?

Íme néhány példa, amelyek segítenek megérteni - olvassa el tovább. Van egy interaktív kódhéj is, egyszerűen nyomja meg a „Futtatás” gombot az adott ablak tetején.

Az osztályok és azok használatának leírása a legegyszerűbb:

Képzelje el, hogy nagyhatalma van. Fajt hoz létre („osztály”).

Ezután hozzon létre attribútumokat az adott fajhoz („tulajdonságok”) - magasság, súly, végtagok, szín, erő stb.

Ezután létrehoz egy példányt arról a fajról - Fido kutya, Drogon a Trónok játékából stb. Ezután a következő esetekkel dolgozik:

  • Például egy játékban cselekednének, kölcsönhatásba lépnének, felhasználva az attribútumaikat.
  • Egy banki alkalmazásban ezek lennének a különböző tranzakciók.
  • A járművásárlási / -eladási / -kereskedelmi / -bérleti alkalmazásban a járműosztály olyan alosztályokat hozhat létre, mint például az autók. Mindegyik olyan tulajdonsággal rendelkezne, mint a futásteljesítmény, az opciók, a jellemzők, a szín és a kivágás.

Már látja, miért hasznos ez. Nagyon hatékony, logikus és hasznos módon hoz létre, újrafelhasznál, adaptál és javít elemeket.

Mostanra valószínűleg rájöttél, hogy ez az osztályozás és a csoportosítás módja, amely hasonlít ahhoz, ahogyan az emberek megtanulják:

  • Az állatok olyan élőlények, amelyek alapvető értelemben nem emberek vagy fák
  • akkor áttér a különböző típusú állatokra - valószínűleg a kutyák, macskák az első állatok, amelyekről a legtöbben megismerkedtünk
  • akkor az állatok különböző tulajdonságaihoz - alakzatokhoz, méretekhez, hangokhoz, függelékekhez stb.

Például, amikor gyermek voltál, az első megértésed egy kutyáról valószínűleg négy lábbal ugatott. Aztán megtanultad megkülönböztetni, hogy egyesek igazi kutyák, mások játékok. Hogy ez a „kutya” koncepció sok típust tartalmazott.

Az osztályok létrehozása és használata alapvetően:

  • sablon építése a „dolgok” elhelyezéséhez - osztályozás
  • amelyet aztán meg lehet operálni. Például felhívja az összes kutyás embert, akitől kérheti a háziállatokkal foglalkozó blog összekapcsolását, vagy minden olyan banki ügyfelet, akinek jó esélyei lehetnek egy új hitelkártyára.

A fő pont itt az osztályok olyan objektumok, amelyek előállíthatják a sablonok példányait, amelyeken műveletek és módszerek alkalmazhatók. Kiváló módszer koncepcionálni, szervezni és felépíteni a hierarchiát bármely szervezet vagy folyamat számára.

Ahogy a világunk bonyolultabbá válik, ezzel hierarchikus szempontból utánozhatjuk ezt a bonyolultságot. Ez egy virtuális informatikai szempontból mélyebb megértést nyújt az üzleti, technikai és társadalmi környezet üzleti folyamatainak és kölcsönhatásainak megértésében is.

Példa lehet egy videojáték, amelyet létrehozott. Minden karakter lehet egy „osztály”, saját attribútumokkal, amely kölcsönhatásba lép más osztályok példányaival. George király, a „King” osztály kapcsolatba léphet Court Jester Funnyman-nal, a „Bohóc” osztályával stb. Lehet, hogy egy királynak királyi „szolga” osztálya van, a „szolga” osztálynak pedig mindig „király” osztálya van.

Ezt fogjuk tenni:

  • hozzon létre egy osztályt és használja
  • hozzon létre egy modult, és helyezze át az osztály létrehozását és kezdeményezését a modulba
  • hívja meg a modult egy új programban az osztály használatához

A kód itt érhető el a GitHub-ban.

#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')

Most hozzunk létre egy modult, és helyezzük át a fenti kód egy részét a modulba. Bármikor létre kell hoznunk ezt az egyszerű x, y koordinátakészletet bármely programban, használhatjuk a modult erre.

Mi az a modul, és miért van rá szükségünk?

A modul egy Python-definíciókat és utasításokat tartalmazó fájl. A modul egy Python-kód, amelyet más programokból lehívhatunk az általánosan használt feladatokhoz, anélkül, hogy be kellene írnunk őket minden egyes programba, amely használja őket.

Például a „matplotlib.plot” hívásakor csomagmodult hív. Ha nem rendelkezik ezzel a modullal, akkor meg kell határoznia a plot funkciót minden olyan programban, amely plot diagramot használt.

A Python dokumentációjából:

Ha kilép a Python tolmácsból, és újra beírja, akkor az elkészített definíciók (függvények és változók) elvesznek. Ezért, ha valamivel hosszabb programot szeretne írni, akkor jobb, ha egy szövegszerkesztővel készíti elő a bemenetet a tolmács számára, és helyette az adott fájllal futtatja. Ez egy parancsfájl létrehozása. Amint a programod hosszabb lesz, érdemes a több karbantartás érdekében több fájlra bontani. Érdemes olyan praktikus funkciót is használni, amelyet több programban írt, anélkül, hogy a definícióját bemásolná az egyes programokba. Ennek támogatására a Pythonnak módja van arra, hogy a definíciókat fájlba helyezze, és szkriptben vagy interaktív példányban használja. a tolmács. Az ilyen fájlt modulnak hívják;A modulból származó definíciók importálhatók más modulokba vagy a fő modulba (a változók gyűjteménye, amelyhez hozzáférhet egy legfelső szinten végrehajtott szkriptben és számológép módban).

Itt az egyszerű modulunk. Az osztály létrehozása és a függvények szükségesek ahhoz, hogy az adott osztály egy példányát áthelyezzék a fenti programból a saját osztályába. Ezután ezt egy új programban fogjuk használni, egyszerűen meghívva és hivatkozva erre a modulra:

Figyelje meg, mit tettünk fent:

  • létrehozta és inicializálta az osztályt
  • létrehozott egy függvényt az osztály egy példányának a négy fő irányban (felfelé, lefelé, jobbra, balra) és a növekmények - mint paraméterek vagy argumentumok - mozgatásához a függvényben
  • létrehozott egy másik függvényt az osztály két példánya közötti távolság kiszámításához a grafikon távolság képletének felhasználásával

Így fogjuk használni az új modult ugyanazon program újraírásához az első részből. Megjegyzés az importálás elején, most importáljuk a simple_module1most létrehozott modult:

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