முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 7 · பாடம் 2 இன் 4பாடத்திட்டத்தில் 26/36~12 min
தொகுதி பாடங்கள் (2/4)

பரம்பரை

பரம்பரை ஒரு புதிய வகுப்பை (துணை வகுப்பு) உருவாக்க உதவுகிறது ஏற்கனவே உள்ள வகுப்பிலிருந்து பண்புகளையும் முறைகளையும் பெறுகிறது (அடிப்படை வகுப்பு), மேலும் அவற்றை நீட்டிக்கலாம் அல்லது மேலெழுதலாம்.

அடிப்படை தொடரியல்

Python
class Animale:
    def __init__(self, nome):
        self.nome = nome

    def saluta(self):
        return f"{self.nome} fa un verso"

class Cane(Animale):       # Cane EREDITA da Animale
    def saluta(self):       # OVERRIDE del metodo
        return f"{self.nome} dice WOOF!"

a = Animale("X")
c = Cane("Fido")
a.saluta()      # 'X fa un verso'
c.saluta()      # 'Fido dice WOOF!'

Animale இலிருந்து __init__ ஐ மீண்டும் எழுதாமல் பெறுகிறது.

super(): அடிப்படை முறையை அழைக்கிறது

நீங்கள் ஒரு அடிப்படை முறையை ** நீட்டிக்க** விரும்பினால் (அதை முழுமையாக மாற்றவில்லை), பயன்படுத்தவும் super():

Python
class Animale:
    def __init__(self, nome):
        self.nome = nome

class Cane(Animale):
    def __init__(self, nome, razza):
        super().__init__(nome)    # delega alla base
        self.razza = razza

c = Cane("Fido", "Labrador")
c.nome        # 'Fido'
c.razza       # 'Labrador'

isinstance: வகை சரிபார்ப்பு

Python
isinstance(c, Cane)        # True
isinstance(c, Animale)     # True (anche la base)
isinstance(c, str)         # False

isinstance(x, BaseClass) அனைத்து துணைப்பிரிவுகளையும் அங்கீகரிக்கிறது: இதுதான் பாலிமார்பிஸத்திற்கு பரம்பரை பயனுள்ளதாக ஆக்குகிறது.

Python
animali = [Cane("Fido", "X"), Animale("Pippo")]
for a in animali:
    print(a.saluta())        # ogni oggetto risponde a suo modo

MRO (முறை தீர்மானம் ஒழுங்கு) - கண்ணோட்டம்

உங்களிடம் பல மரபுரிமைகள் இருக்கும்போது, எந்த வரிசையில் பார்க்க வேண்டும் என்பதை பைதான் தீர்மானிக்கிறது MRO ஐப் பின்பற்றி ஒரு முறைக்கு, C3 அல்காரிதம் மூலம் கணக்கிடப்படுகிறது. க்கு 95% வழக்குகள் தெரிந்து கொள்ள போதுமானது:

  1. இது நிகழ்வில் முதலில் தெரிகிறது,
  2. பின்னர் அதன் வகுப்பில்,
  3. பின்னர் அறிவிப்பு வரிசையில் அடிப்படை வகுப்புகளில்.
Python
Cane.__mro__
# (<class 'Cane'>, <class 'Animale'>, <class 'object'>)

object என்பது பைதான் 3 இல் உள்ள ஒவ்வொரு வகுப்பின் மூலமும் ஆகும்.

உங்கள் முறை

உடற்பயிற்சி#python.m7.l2.e1
முயற்சிகள்: 0ஏற்றுகிறது…

கொடுக்கப்பட்ட `வகுப்பு வாகனம்: def __init__(self, brand): self.brand = brand`, __init__(self, brand, model) உடன் `Car(Vehicle)` என்பதை வரையறுத்து அது super().__init__ என்று அழைக்கிறது மற்றும் self.model ஐ சேமிக்கிறது. `a = Car('Fiat', '500')` ஐ உருவாக்கி, `(a.brand, a.model)` என்பதை மதிப்பிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

super().__init__(brand) பிறகு self.model = மாதிரி.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

மதிப்பாய்வு பயிற்சி

உடற்பயிற்சி#python.m7.l2.e2
முயற்சிகள்: 0ஏற்றுகிறது…

`வகுப்பு வடிவம்: டெஃப் பகுதி(சுய): __init__(செல்ஃப், சைட்) உடன் 0` மற்றும் `கிளாஸ் ஸ்கொயர்(வடிவம்)` மற்றும் பக்க * பக்கத்தை வழங்கும் பகுதி() ஆகியவற்றை வரையறுக்கவும். `q = Square(5)` ஐ உருவாக்கி, tuple `(q.area(), isinstance(q, Shape))` ஐ மதிப்பிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

self.side * சுயம்.பக்கம்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

கூடுதல் சவால்

உடற்பயிற்சி#python.m7.l2.e3
முயற்சிகள்: 0ஏற்றுகிறது…

Create a class `Square` that inherits from the `Rectangle` class (defined below). The constructor of `Square` must take a single parameter `side` and pass it to `super().__init__(side, side)`. Instantiate a square with side `6` in `sq` and evaluate `sq.area()`.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

Declare class Square(Rectangle): and call super().__init__(side, side) in the constructor.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்