Python hỗ trợ đa kế thừa

Tính kế thừa (kế thừa) là một trong những tính chất quan trọng của lập trình hướng đối tượng (lập trình hướng đối tượng). Tính chất của đề tài này liên quan đến việc định nghĩa một lớp mới (lớp mới) dựa trên lớp cũ đã có (lớp hiện có). Lớp mới được gọi là lớp dẫn xuất (lớp dẫn xuất) hay lớp con (lớp con). Các lớp đã được gọi là lớp cơ sở cũ (lớp cơ sở) hoặc lớp cha (lớp cha)

1. 1. Lớp con và lớp cha trong Python

Python cũng là một ngôn ngữ lập trình hướng đối tượng nên cũng hỗ trợ tính kế thừa. Bất kỳ lớp nào trong Python cũng có thể là một lớp cơ sở. Cú kế thừa trong Python

class BaseClass: # Body of base class class DerivedClass(BaseClass): # Body of derived class

DerivedClass sẽ kế thừa các thuộc tính và phương thức từ BaseClass. Việc này chủ yếu là để tái sử dụng mã. Hơn nữa, DerivedClass có thể định nghĩa thêm các thuộc tính và phương thức của chính nó

Ví dụ tạo một lớp Cha Person

class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info()

Ví dụ Lớp con Sinh viên kế thừa Lớp cha Người

class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # Student inherits from Person # without add any other properties or methods class Student(Person): pass # create an object of Student class kane = Student("Kane", 29) kane.info() Kết quảKane, 29 years old.

Trong ví dụ trên, Lớp Sinh viên kế thừa Lớp Người mà không bổ sung bất kỳ thuộc tính và phương thức nào cho Lớp Sinh viên riêng. Tức là, Lớp Sinh viên có cùng thuộc tính và phương thức như Lớp Người

Có những trường hợp lớp con không định nghĩa được gì như Lớp Sinh viên. Khi tạo một đối tượng của lớp Student thì Python sẽ gọi hàm class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 2 của lớp Person mà lớp Student kế thừa được

1. 2. Định nghĩa hàm __init__() trong lớp con

Chúng ta có thể định nghĩa lại hàm khởi tạo class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 2 trong lớp con. Lúc này, hàm class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 2 trong lớp con sẽ ghi đè (overriding) lên hàm class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 2 kế thừa được từ lớp cha

________số 8

Trong ví dụ trên, chúng ta gọi lại hàm class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 2 của lớp cho Person trong lớp Student để đảm bảo tính kế thừa. If not used class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 7, they we could used class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 8

class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 2

Hàm class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 9 giúp lớp con tự động kế thừa các thuộc tính và phương thức từ lớp cha

1. 3. Lớp con có thuộc tính và phương thức riêng

Lớp con thường có các thuộc tính và phương thức riêng của nó

class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 4Kết quảclass Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 5

Trong ví dụ trên, Lớp Sinh viên kế thừa từ Lớp Người. Và lớp Học sinh có thêm thuộc tính id và phương thức class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # Student inherits from Person # without add any other properties or methods class Student(Person): pass # create an object of Student class kane = Student("Kane", 29) kane.info() 0

2. Ghi đè phương thức trong Python

Lớp con có thể định nghĩa lại các phương thức được kế thừa từ lớp cha. That was call is method overriding

class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 7Kết quảclass Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 5

Trong ví dụ trên, Lớp Sinh viên kế thừa phương thức class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # Student inherits from Person # without add any other properties or methods class Student(Person): pass # create an object of Student class kane = Student("Kane", 29) kane.info() 1 từ Lớp Người. Và lớp Học sinh đã định nghĩa lại phương thức class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # Student inherits from Person # without add any other properties or methods class Student(Person): pass # create an object of Student class kane = Student("Kane", 29) kane.info() 1 cho riêng nó

3. Sử dụng hàm isinstance() và issubclass() trong Python

Hàm class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # Student inherits from Person # without add any other properties or methods class Student(Person): pass # create an object of Student class kane = Student("Kane", 29) kane.info() 3 giúp kiểm tra một đối tượng có phải là một thực thể của một lớp hay không. Hàm class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # Student inherits from Person # without add any other properties or methods class Student(Person): pass # create an object of Student class kane = Student("Kane", 29) kane.info() 4 giúp kiểm tra một lớp có phải là lớp con của một lớp khác hay không. Hàm class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # Student inherits from Person # without add any other properties or methods class Student(Person): pass # create an object of Student class kane = Student("Kane", 29) kane.info() 5 return data type of a variable in Python

class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 0Kết quảclass Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print(self.name + ",", self.age, "years old.") # create objects of Person class john = Person("John", 36) john.info() marry = Person("Marry", 35) marry.info() 1

Chúng ta thấy Lớp Sinh viên kế thừa từ Lớp Người. Do đó, các đối tượng của lớp Student cũng chính là các đối tượng của Person. The other object of the Person is not a Student

Chủ đề