Subclass Creation

Sizda bir `class` bo'lganidan so'ng, siz ushbu `class`dan subtur yaratishingiz mumkin.

SU

Subturlarni Yaratish

Sizda bir class bo'lganidan so'ng, siz ushbu classdan subtur yaratishingiz mumkin. Subtur asosiy classning atributlari va usullarini meros qilib oladi.

Shuningdek, siz ota-ona atributlari va usullarini o'zgartirishingiz mumkin. Bu degani, agar farzandda ota-ona usuli yoki atributi bilan bir xil nomga ega bo'lsa, Python farzandning usulini ishlatadi.

Oldingi Ball classimizni olib, uni subtur sifatida ishlatamiz:

# ball.py
 
class Ball:
 
    def __init__(self, color: str, size: float, weight: float, ball_type: str) -> None:
        self.color = color
        self.size = size
        self.weight = weight
        self.ball_type = ball_type
 
    def bounce(self):
        if self.ball_type.lower() == 'bowling':
            print("Bowling balls can't bounce!")
        else:
            print(f"The {self.ball_type} ball is bouncing!")

Endi Balldan subtur yaratamiz va ball.py bilan bir xil papkada yangi modul yaratamiz: bowling_ball.py.

# bowling_ball.py
import ball
 
class BowlingBall(ball.Ball):
 
    def roll(self):
        print(f'You are rolling the {self.ball_type} ball')
 
if __name__ == '__main__':
    ball = BowlingBall()
    ball.roll()

Balldan subtur yaratish uchun siz quyidagi kodni yozasiz: class BowlingBall(ball.Ball). Bu Ballni subtur qiladi va yangi BowlingBall classini yaratadi.

Ushbu classda __init__() metodi ta'riflanmagan. Bu, siz ota-onaning __init__() metodini meros qilib olasiz va uni ishlatasiz. Shuningdek, siz ota-ona classda yo'q yangi roll() usulini qo'shdingiz.

Endi terminalda ushbu kodni ishga tushirishga harakat qilaylik:

python3 bowling_ball.py

Bu quyidagi xatoni chiqaradi:

Traceback (most recent call last):
  File "bowling_ball.py", line 10, in <module>
    ball = BowlingBall()
TypeError: __init__() missing 4 required positional arguments: 'color', 'size', 'weight', and 'ball_type'

Ah! BowlingBall misolini to'g'ri yaratmadik. Yuqorida aytilganidek, BowlingBall Ballning __init__ metodidan foydalanmoqda, shuning uchun biz Ballning __init__ metodi kutayotgan argumentlarni taqdim etishimiz kerak.

Kodni to'g'irlab, u to'g'ri ishlashi uchun quyidagicha o'zgartiramiz:

# bowling_ball.py
import ball
 
class BowlingBall(ball.Ball):
 
    def roll(self):
        print(f'You are rolling the {self.ball_type} ball')
 
if __name__ == '__main__':
    ball = BowlingBall('green', 10, 15, 'bowling')
    ball.roll()

Endi uni ishga tushirganingizda, quyidagi natijani olishingiz kerak:

You are rolling the bowling ball

Kodga qaytib, bounce() usulini chaqiradigan qo'shimchani qo'shishga harakat qiling va u siz uchun ham ishlayotganini tekshirib ko'ring.

Ushbu sahifada

Xato haqida xabar berish