Di vê dersê de, em ê li ser çîn, çêker û mîrasiya di python de fêr bibin.
Ev têgeh bi rastî di bernameyek mezin de girîng in ku tê de celebên cûda hewce ne ku bêne diyar kirin.
çînên
Ders di bernamekirinê de bingehîn in û ew ji python re ne taybetî ne. Gelek din zimanên bernamenûs piştgiriya têgîna dersan. Em dersan bikar tînin da ku celebên daneya nû diyar bikin.
Heya nuha, me li ser celebên daneya bingehîn ên di Python-ê de mîna hejmar, rêzik, û boolean fêr bûne. Vana di Python de celebên daneya bingehîn an hêsan in. Me di heman demê de çend celeb daneyên tevlihev ên wekî navnîş û ferhengan jî dîtine.
Dema ku ev celeb zehf bikêr in, ew her gav nikarin ji bo modela têgînên tevlihev werin bikar anîn. Mînakî, li ser ramana xalek, an selikek kirînê bifikirin. Selikek kirînê ne lîsteyek an lîsteyek e. Ew celebek daneyên cûda ye. Ji ber vê yekê em dikarin dersan bikar bînin da ku celebên nû destnîşan bikin da ku têgehên rastîn model bikin.
Naha, em celebek daneya nû ya bi navê xal diyar bikin. Ev celebê nû dê bibe xwediyê rêbazên ku me berê kontrol kir.
Bi vî rengî hûn ê wiya bikin:
Em bi danasîna çînek bi karanîna peyva seretayî ya "class" dest pê dikin û tavilê piştî wê em navek didin pola xwe.
class Point
Naha, li peymana navkirinê ku min li vir bikar aniye binêre. Min nameya yekem li vir bi sernavê mezin kir, ev e ya ku em jê re dibêjin peymana navkirina pascal. Ev peyman ji ya ku em ji bo binavkirina guhêrbar û fonksiyonên xwe bikar tînin cihê ye ku ji bo wê em her gav tîpên piçûk bikar tînin û gelek peyvan bi karanîna jêrînek ji hev vediqetînin. Lê dema ku navên çînan binav dikin, em ji bo veqetandina çend peyvan li şûna wan xêzeke binî bi kar naynin, em tîpa yekem a her peyvê mezin dikin.
Piştî danasîna çîna me, kolonek tê bikar anîn ku tê vê wateyê ku naha blokek tête diyar kirin.
class Point:
def move (self):
Di vê blokê de, em dikarin hemî fonksiyon an rêbazên ku girêdayî xalan in diyar bikin. Mînakî, em dikarin fonksiyonek bi navê "tevger" ji bo veguheztina xalek diyar bikin. Bala xwe bidinê ku gava ku em paranteza vekirî binivîsin, PyCharm bixweber "xwe" li vir zêde dike. Ev keywordek taybetî ye û di demek kurt de ez vegerim ser vê. Ka em li ser termînalê "tevger" çap bikin.
print("move")
Ka em rêbazek din wekî "xêzkirin" diyar bikin û li ser termînalê çap bikin.
def draw(self):
print("draw")
Em bi pênasekirina çîna xwe ya "xal" qediyan. Bi vê cureyê nû, em dikarin tiştên nû biafirînin. Çînek bi tenê nexşe an şablonê ji bo afirandina tiştên ku mînakên rastîn li ser bingeha wê nexşeyê ne diyar dike. Ji bo afirandina objeyekê, em navê çîna xwe dinivîsin û dûv re jî wekî fonksiyonek jê re dibêjin. Ev tiştekî nû diafirîne û paşê vedigerîne. Wê hingê em dikarin wê tiştê di guhêrbarekê de hilînin. Bila ez nîşanî we bidim:
Li vir me "xala1" ku xalek sê-alî ye diyar kiriye. Hûn dikarin bibînin ku, em dikarin hevrêzên kesane li ser termînalê çap bikin.
Em dikarin bi vê xalê re du awayên "xêzkirin" û "tevger" bikar bînin.
Ji ber vê yekê ji nû ve, em çînan bikar tînin da ku celebên nû destnîşan bikin û van celeb dikarin rêbazên ku em di laşê polê de destnîşan dikin hebin. Ders dikarin xwedî taybetmendiyên ku em dikarin li her deverê di bernameyên xwe de bicîh bikin.
Avakar
Heya nuha, em fêr bûne ka meriv çawa bi karanîna dersan celebên nû biafirîne. Niha di vê pêkanînê de pirsgirêkek biçûk heye. Em dikarin bi karanîna çînan bêyî koordînatek x an y xalek xalek biafirînin û ew ne îdeal e. Bila ez nîşanî we bidim.
Berî ku em hevrêziya x destnîşan bikin, em xalek çêbikin û çap bikin. Rêvekirina bernameya me di xeletiyek taybetmendiyê de wiha encam dide:
Ev tê wê wateyê ku cewhera xalê xwedan taybetmendiyek bi navê x nîne. Naha pirsgirêk ev e ku mimkun e ku meriv xalek bêyî koordînatên x an y hebe. Ev ne wate ye ji ber ku gava em qala xalekê dikin, divê em zanibin ku ew xal li ku ye. Ji bo çareserkirina vê pirsgirêkê, em avakerek bikar tînin. Çêker fonksiyonek e ku di dema afirandinê de tê gotin.
Li vir em çawa çêkerek bikar tînin. Pêşî, em di bernameya jorîn de nirxên hevrêzên x û y derbas bikin.
point = Point(10, 20)
print(point.x)
Naha, pêdivî ye ku em di vê polê de rêbazek taybetî ya bi navê çêker lê zêde bikin. Hevoksaziya wê wiha ye:
def __init__(self, x, y):
init
kurteya destpêkê ye, û ev fonksiyon an rêbazek e ku dema ku tiştek xalek nû tê afirandin tê gazî kirin. X û y tavilê li dû têne zêdekirin self
ji bo lê zêde bike du parametreyên zêde.
Piştî vê yekê, divê em x û y-ê bi nirxên derbasbûyî ango 10 û 20-ê re nexşînin
self.x = x
self.y = y
Em bikar bînin self
ku îşaret bi tişta heyî bikin û dûv re em taybetmendiya x bi argumana x-yê ku ji fonksiyona "x" re derbas dibe destnîşan dikin. Bi vî awayî, bi kar tînin init
rêbaz, em dikarin tiştên xwe bidin destpêkirin. Ev rêbaz wekî çêker tê binav kirin. Werin em bernameya xwe bimeşînin.
Naha, em dikarin paşê hevrêzên x û y biguherînin. Ka em x koordînat nûve bikin:
point = Point(10, 20)
point.x = 11
print(point.x)
Naha, hevrêziya x bi nirxa 11-ê tê nûve kirin.
Fêre
Li vir ji bo we xebatek balkêş heye.
Ez dixwazim ku hûn celebek nû ya bi navê kesek diyar bikin. Divê ev tiştên "Kes" hebe "name
"taybetmendiyek û hem jî"talk()
”Rêbaza.
Ew karekî hêsan e û divê ji du deqeyan zêdetir neke.
Çare
Bi danasîna çîna "Kes" bi vî rengî dest pê bikin:
class Person:
self.name = name
Em ê paşê çêker diyar bikin. Naha, em dikarin objeya "Kes" biafirînin. Ka em jê re bibêjin John
john = Person("John Smith")
print(john.name)
john.talk()
Naha, biçin beşa yekem a kodê û avakerek biafirînin.
def __init__(self, name):
Koda dawî dê wiha xuya bike:
Her weha hûn dikarin rêzikên formatkirî û têgehên din li gel çîn û çêkeran bikar bînin.
Mîratî
Mîrasî têgehek din e ku bi dersan ve girêdayî ye ku dihêle hûn kodek ji nû ve bikar bînin.
Vê perçeya kodê bifikirin.
class Dog:
def walk(self):
print("walk")
Me çînek "Kûçik" bi rêbazek "meş" çêkir. Di vê rêbazê de, em tenê peyama meşê li ser termînalê çap dikin. Ka em bibêjin, di bernameyek rastîn de, li vir tenê yek rêzek 10 rêzikên kodê hene. Di pêşerojê de, heke ji bo ku rêbaza "meşê" hebe, çînek din hewce bike, em ê neçar bimînin ku hemî wê kodê dubare bikin. Ev ne îdeal e.
Di bernamekirinê de, prensîbek me ya bi navê DRY heye ku kurt e ji bo xwe dubare neke. Em bêjin carek di paşerojê de, em pirsgirêkek bi rêbaza xweya "meşê" re kifş dikin û heke me vê rêbazê li gelek deverên din dubare kiribe an dubare kiribe, divê em vegerin û wê pirsgirêkê li her cîhê ku me ev dubare kiriye rast bikin. navê dizî. Ji ber vê yekê di bernamekirinê de divê em tiştekî du caran pênase nekin.
Ji bo çareserkirina vê pirsgirêkê rêgezên cihêreng hene lê li vir em ê ya ku ji bo destpêkê hêsantir e û jê re mîras tê gotin fêr bibin. Di vê rewşê de, em ê çînek din "mammal" biafirînin û taybetmendiya xwe ya "meşa" di wê polê de diyar bikin.
class Mammal:
def walk(self):
print("walk")
Piştî danasîna çîna xweya "Memik" em dikarin mîrasiyê bikar bînin da ku taybetmendiyên bi vî rengî derbas bikin:
Hem çînên kûçik û hem jî pisîk hemî rêbazên pola ku di pola dêûbavê xwe de hatine destnîşan kirin mîras digirin. Naha, em dikarin rêbazên taybetî yên kûçikan bi vî rengî zêde bikin:
class Dog:
def bark(self):
print("bark")
Hot dog!
Ev hemî li ser çîn, çêker û ji nû ve karanîna kodê di dersên bi têgînên mîras de bû. Niha em nêzî dawiya rêzenivîsa xwe ne. Di vê nuqteyê de, divê hûn karibin kodên baş, xwendin û kurt di Python de hilberînin.
Em ê di dersa pêş de têgeha modul û pakêtan bibînin.
Leave a Reply