Java ndiwo mutauro wekutanga wandakadzidza mubasa rangu. Chimiro chayo chine hwaro mumakore angu ekutanga ekunzwisisa mazano ehurongwa. Mushure mokupfuura nemimwe mitauro yakati wandei ine nzira dzakasiyana kwazvo, ndawedzera maonero angu. Nhasi ndoda kumbozeya nyaya yenhaka .
Nhaka muJava
MuJava, iyo pfungwa yenhaka yakanyatsobatanidzwa nepfungwa ye subtyping . Subtyping ndiko kuita kwehukama hweIS A. Semuenzaniso, kirasi Rabbit
imhando yemhando Mammal
. Kubva zvino, muenzaniso Rabbit
une maitiro ese Mammal
: inogara nhaka maitiro.
Nekuda kweizvi, unogona kupfuudza muenzaniso Rabbit
apo nzira inodaidzira Mammal
parameter kana kudzosa muenzaniso Rabbit
kana nzira yekudzoka iri Mammal
. Kana iwe wakadzidza Java, .Net, kana chimwe chinhu chiri kure chakafanana, ndiwo maonero aunoona nhaka, uye inova itsva yemazuva ose.
Inhaka yakajeka .
class Animal { void feed(); } class Rabbit extends Animal { //1 }
- Nekuti
Rabbit
IS A
Animal
inogonafeed()
Nhaka muGo
Pandakatanga kutarisa Go, ndakashamisika kuti haina subtyping ichiri kupa nhaka. Go inoshandisa dhadha kutaipa:
Kana ichiita sedhadha, inotuhwina sedhadha, uye quacks sedhadha, zvino pamwe ndizvo.
Kana Go struct
ichishandisa mabasa akafanana senge interface, inoisa zvachose iyo interface.
type Animal interface { feed() //1 } type Rabbit struct { } func (rabbit Rabbit) feed() { //2 // feeds }
-
Animal
inogona kudya - Nekuti
feed()
basa riripo rinotoraRabbit
separameter,Rabbit
inoshandisaAnimal
Ini handifarire Enda nekuda kwekukanganisa-kubata maitiro, asi ini ndaive nepfungwa mbiri pamusoro pekuita zvizere. Kune rumwe rutivi, ndakanzwisisa kuti yakanga iri pfungwa itsva, uye ndakaedza kuramba ndakazaruka mundangariro; nerumwe rutivi, ndinofunga kuti zvinhu zvinogara zviri nani pachena pane kujeka, kungave mukuvandudza software kana hupenyu chaihwo.
Nhaka muPython
Python ndiwo mutauro unonakidza wandinoziva maererano nenhaka.
Subtyping uye mhando-yakavakirwa nhaka yave iripo muPython kubva payakavambwa.
class Animal: def feed(self): #1 pass #2 class Rabbit(Animal): #3 pass
-
Animal
inogona kudya - Iko hakuna makirasi abstract kana interfaces muPython, makirasi chete
- Nekuti
Rabbit
IS A
Animal
inogonafeed()
Panyaya iyi, Python inoshanda zvakafanana neJava maererano nenhaka. Python inopawo duck typing, iyo yandakatsanangura semashiripiti nzira . Semuyenzaniso, kuita chimwe chinhu chinogoneka , semuenzaniso , chinogona kudzosa iterator , unongoda kuita __iter__()
uye __next__()
:
class SingleValueIterable(): done = False def __init__(self, value): self.value = value def __iter__(self): #1 return self def __next__(self): #1 if self.done: raise StopIteration else: self.done = True return self.value svi = SingleValueIterable(5) sviter = iter(svi) #2 for x in sviter: print(x) #3
- Dhadha kutaipa nzira
- Gadzira
Iterator
- Pythons inoziva sei kubva patakaita nzira dziri pamusoro -
5
Dambudziko neiyi dhadha yekunyora nzira nderekuti inoshanda chete kune yePython yakafanotsanangurwa yemashiripiti nzira. Zvakadini kana iwe uchida kupa kirasi iyo yechitatu bato inogona kutora kubva mairi zvisina?
class Animal: def feed(): pass class Rabbit: def feed(): pass
Muchidimbu chiri pamusoro apa, Rabbit
haisi Animal
, zvinotirwadza. Pinda PEP 544 , yakanzi Protocols: Structural subtyping (static duck typing). Iyo PEP inogadzirisa kusagoneka kwekutsanangura nzira dzemashiripiti kumakirasi edu. Inotsanangura kirasi Protocol
yakapfava: kana uchinge wagara nhaka kubva mairi, nzira dzinotsanangurwa mukirasi dzinove dzakakodzera kutaipa dhadha, nokudaro zita - static duck typing.
from typing import Protocol class Animal(Protocol): #1 def feed(): #2 pass class Rabbit: def feed(): #2 pass class VenusFlytrap: def feed(): #2 pass
- Nhaka kubva
Protocol
- Nekuti
Animal
Protocol
, chero kirasi inotsanangurafeed()
inovaAnimal
, zvirinani kana kuipa
Mhedziso
Hurongwa hunonangana nechinhu, nhaka, uye kunyora zvishoma zvinogona kunge zvine zvazvinoreva zvisingaturikire mune mimwe mitauro, zvichienderana nemutauro wekutanga waunodzidza. Java inozviita semutauro wakatarisana neChinhu uye inopa iyo yakazara package. Enda hausi mutauro weOO, asi uchiri kupa subtyping kuburikidza nedhadha kutaipa. Python inopa zvese zviri pachena uye zvakadzika nhaka asi pasina mainterface.
Iwe unodzidza mutauro mutsva wechirongwa nekuuenzanisa ne(s) waunotoziva. Kuziva mashandisirwo emutauro ndicho chinhu chakakosha pakunyora kodhi yeidiomatic mumutauro wauri kuda. Zvijairirane nezvinhu zvisipo mumitauro yako inozivikanwa: ivo vanozowedzera kunzwisisa kwako kwehurongwa hwakazara.
Enda kumberi:
Yakabudiswa paA Java Geek muna Ndira 26, 2025