mobile theme mode icon
theme mode light icon theme mode dark icon
Random Question Satunnainen
speech play
speech pause
speech stop

Sisustajien ymmärtäminen Pythonissa

Sisustimet ovat suunnittelumalli, jonka avulla voit muokata tai laajentaa kohteen käyttäytymistä muuttamatta kohteen alkuperäistä toteutusta. Toisin sanoen koristelujen avulla voit lisätä uusia toimintoja olemassa olevaan objektiin muuttamatta sen ydinkoodia.

Sisustaja on tyypillisesti toiminto, joka ottaa objektin argumenttina ja palauttaa uuden objektin, joka "käärii" alkuperäisen objektin. Uudella objektilla on samat menetelmät ja attribuutit kuin alkuperäisellä objektilla, mutta siinä on myös joitain lisätoimintoja tai -käyttäytymistä, jotka sisustaja tarjoaa.

Oletetaan esimerkiksi, että sinulla on luokka nimeltä "Auto", jolla on menetelmä nimeltä "drive". ()` joka saa auton liikkumaan. Voit luoda "SpeedLimitDecorator"-nimisen koristelun, joka muuttaa "drive()"-menetelmää rajoittamaan auton nopeutta. "SpeedLimitDecorator" ottaa alkuperäisen "Car"-objektin argumenttina ja palauttaa uuden "Car"-objektin, jolla on samat menetelmät ja attribuutit kuin alkuperäisellä "Autolla", mutta lisättynä nopeudenrajoitustoiminnolla.

Tässä on esimerkki siitä, kuinka voit käyttää koristelua Pythonissa:
```
class Auto:
def drive(itse):
print("Auto ajaa")

class SpeedLimitDecorator:
def __init__(itse, auto):
itse. auto = auto
def drive(itse):
self.car.drive()
print("Auto on nyt rajoitettu 50 mph")

auto = Auto()
speed_limited_car = SpeedLimitDecorator(auto)
speed_limited_car.drive() # tulostaa "Auto ajaa" ja "Auto on nyt rajoitettu 50 mph:iin"
```
Tässä esimerkissä `SpeedLimitDecorator`-luokka ottaa `Car`-objektin argumenttina rakentajassaan ja muuttaa sitten `drive( )" alkuperäisen "Car"-objektin menetelmä rajoittaa sen nopeutta. Luokassa "SpeedLimitDecorator" on myös oma "drive()"-menetelmä, joka kutsuu käärityn objektin alkuperäistä "drive()"-menetelmää, mutta lisättynä 50 mph:n rajoituksella. Koristelaitteet ovat tehokas työkalu olemassa olevien objektien muokkaamiseen tai laajentamiseen. muuttamatta niiden alkuperäistä toteutusta. Niitä voidaan käyttää lisäämään uusia toimintoja, muokkaamaan käyttäytymistä tai jopa korvaamaan osia objektin toteutuksesta vaikuttamatta muuhun koodiin.

Knowway.org käyttää evästeitä tarjotakseen sinulle paremman palvelun. Käyttämällä Knowway.orgia hyväksyt evästeiden käytön. Tarkempia tietoja saat tutustumalla evästekäytäntöömme. close-policy