Ֆունկցիոնալության ընդլայնում super()-ի միջոցով

Python-ում super()-ը ներկառուցված ֆունկցիա է, որն օգտագործվում է ծնող class-ից որևէ մեթոդ կանչելու համար։ Դա հատկապես օգտակար է class-ների ժառանգման մեջ, երբ ցանկանում եք ծնող class-ից ընդլայնել կամ փոփոխել մեթոդի վարքագիծը ժառանգ class-ում: super()-ը նույնպես կարևոր է ենթադասերի պատշաճ սկզբնավորման համար:
Հասկանալու համար, թե ինչպես կարող է super()-ը օգտագործվել մեթոդների և class-ների սկզբնավորման մեջ, եկեք օգտագործենք կենդանիների օրինակը, երբ հնչյուններ են արձակում: Մենք կստեղծենք Animal class և երկու ենթադաս՝ Dog and Cat:
class Animal:                       # Define a class named 'Animal'
    def __init__(self, species):
        self.species = species

    def speak(self):
        return 'Sounds...'

class Dog(Animal):                  # Define a subclass named 'Dog' that inherits from 'Animal'
    def __init__(self, name):
        super().__init__('Dog')     # Call the parent's '__init__' method using 'super()'
        self.name = name            # Additional attribute 'name' for 'Dog'
        print(self.species)         # Will print Dog

    def speak(self):
        original = super().speak()  # Call the parent's 'speak' method using 'super()'
        return original + ' Woof!'

class Cat(Animal):                  # Define a subclass named 'Cat' that inherits from 'Animal'
    def __init__(self, name):
        super().__init__('Cat')     # Call the parent's '__init__' method using 'super()'
        self.name = name            # Additional attribute 'name' for 'Cat'

    def speak(self):
        original = super().speak()  # Call the parent's 'speak' method using 'super()'
        return original + ' Meow!'

dog = Dog('Rex')                              # Create an instance of the 'Dog' class
cat = Cat('Fluffy')                           # Create an instance of the 'Cat' class
print(dog.name, dog.species, dog.speak())     # Rex Dog Sounds... Woof!
print(cat.name, cat.species, cat.speak())     # Fluffy Cat Sounds... Meow!
Այստեղ և՛ Dog, և՛ Cat ենթադասերն օգտագործում են super().__init__()՝ իրենց ծնող Animal class-ից __init__() մեթոդը կանչելու համար: Սա ապահովում է, որ Dog-ի կամ Cat-ի յուրաքանչյուր օբյեկտ ստեղծվի համապատասխան անունով: Նմանապես, speak() մեթոդը երկու ենթադասերում օգտագործում է super().speak()՝ Animal-ից speak() մեթոդը կանչելու համար՝ թույլ տալով ներառել կենդանիների բնօրինակ ձայնը իրենց speak() մեթոդներում։
Այսպիսով, super() ֆունկցիան ենթադասին թույլ է տալիս օգտագործել և ընդլայնել իր superclass-ի (սուպերդասի) վարքագիծը: Այն կարևոր դեր է խաղում կոդի բազմակի օգտագործման հնարավորությունը մեծացնելու, ենթադասերի պատշաճ ստեղծումն ապահովելու և ձեր կոդը մոդուլային և ընթեռնելի պահելու գործում: Հետևաբար, super() ֆունկցիան հզոր գործիք է օբյեկտների վրա հիմնված ծրագրավորման մեջ:

Առաջադրանք․ մեքենայի դասեր

Ձեզ հանձնարարված է ստեղծել class-ներ տարբեր տեսակի տրանսպորտային միջոցների համար: Այս class-ները պետք է մոդելավորեն իրական մեքենաների որոշ հատկությունները և վարքագիծը:
  1. Vehicle class - Հիմնական class-ն է, որը պետք է ունենա հետևյալ ատրիբուտները.
      • make - մեքենայի արտադրողը:
      • model - մեքենայի կոնկրետ մոդելը:
      • year - մեքենայի արտադրության տարեթիվը:
      • honk() անունով մեթոդ, որը կանչելիս տպում է Honk! տողը:
  1. Car class - Այս class-ը պետք է ժառանգի Vehicle class-ից: Այն պետք է ունենա Vehicle class-ի բոլոր ատրիբուտներն ու մեթոդները՝ գումարած հետևյալը.
      • color - ներկայացնում է մեքենայի գույնը։
      • Այն պետք է փոփոխի Vehicle class-ի honk() մեթոդը: Երբ կանչ է տեղի ունենում, այս մեթոդը պետք է տպի Beep beep! տողը:
  1. Bicycle class - Այս class-ը նույնպես պետք է ժառանգի Vehicle class-ից: Այն պետք է ունենա Vehicle class-ի բոլոր ատրիբուտներն ու մեթոդները, բայց պետք է փոփոխի honk() մեթոդը: Երբ կանչվում է այս մեթոդը, ելքում պետք է տպվի Ring ring!:
Ձեր խնդիրն է ստեղծել նշված class-ները և մեթոդները:
Մուտք
Ելք
car=Car('Tesla', 'Model S', 2022, 'Red'); bicycle=Bicycle('Schwinn', 'Fastback', 2020); car.honk(); bicycle.honk()
Beep beep! Ring ring!
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue