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-ները պետք է մոդելավորեն իրական մեքենաների որոշ հատկությունները և վարքագիծը:
Vehicle class - Հիմնական class-ն է, որը պետք է ունենա հետևյալ ատրիբուտները.
make - մեքենայի արտադրողը:
model - մեքենայի կոնկրետ մոդելը:
year - մեքենայի արտադրության տարեթիվը:
honk() անունով մեթոդ, որը կանչելիս տպում է Honk! տողը:
Car class - Այս class-ը պետք է ժառանգի Vehicle class-ից: Այն պետք է ունենա Vehicle class-ի բոլոր ատրիբուտներն ու մեթոդները՝ գումարած հետևյալը.
color - ներկայացնում է մեքենայի գույնը։
Այն պետք է փոփոխի Vehicle class-ի honk() մեթոդը: Երբ կանչ է տեղի ունենում, այս մեթոդը պետք է տպի Beep beep! տողը:
Bicycle class - Այս class-ը նույնպես պետք է ժառանգի Vehicle class-ից: Այն պետք է ունենա Vehicle class-ի բոլոր ատրիբուտներն ու մեթոդները, բայց պետք է փոփոխի honk() մեթոդը: Երբ կանչվում է այս մեթոդը, ելքում պետք է տպվի Ring ring!:
Ձեր խնդիրն է ստեղծել նշված class-ները և մեթոդները: