Hướng dẫn what is parent class python? - python lớp cha là gì?

Giới thiệu

Lập trình hướng đối tượng tạo ra các mẫu mã có thể tái sử dụng để hạn chế dự phòng trong các dự án phát triển. Một cách mà lập trình hướng đối tượng đạt được mã có thể tái chế là thông qua kế thừa, khi một lớp con có thể tận dụng mã từ một lớp cơ sở khác.

Hướng dẫn này sẽ trải qua một số khía cạnh chính của thừa kế trong Python, bao gồm cách các lớp cha và lớp con hoạt động, cách ghi đè các phương thức và thuộc tính, cách sử dụng hàm

class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
0 và cách sử dụng nhiều kế thừa.

Điều kiện tiên quyết

Bạn nên cài đặt Python 3 và môi trường lập trình được thiết lập trên máy tính hoặc máy chủ của bạn. Nếu bạn không có môi trường lập trình được thiết lập, bạn có thể tham khảo hướng dẫn cài đặt và thiết lập cho môi trường lập trình cục bộ hoặc cho môi trường lập trình trên máy chủ của bạn phù hợp với hệ điều hành của bạn (Ubuntu, Centos, Debian, v.v.)

Thừa kế là gì?

Kế thừa là khi một lớp sử dụng mã được xây dựng trong một lớp khác. Nếu chúng ta nghĩ về sự kế thừa về mặt sinh học, chúng ta có thể nghĩ về một đứa trẻ thừa hưởng những đặc điểm nhất định từ cha mẹ của chúng. Đó là, một đứa trẻ có thể thừa hưởng chiều cao hoặc màu mắt của cha mẹ. Trẻ em cũng có thể chia sẻ cùng họ với cha mẹ của chúng. is when a class uses code constructed within another class. If we think of inheritance in terms of biology, we can think of a child inheriting certain traits from their parent. That is, a child can inherit a parent’s height or eye color. Children also may share the same last name with their parents.

Các lớp được gọi là các lớp con hoặc các lớp con kế thừa các phương thức và biến từ các lớp cha hoặc các lớp cơ sở.child classes or subclasses inherit methods and variables from parent classes or base classes.

Chúng ta có thể nghĩ về một lớp cha mẹ gọi là

class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
1 có các biến lớp cho
class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
2,
class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
3 và
class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
4 rằng lớp con
class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
5 sẽ kế thừa từ
class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
1.

Do lớp con

class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
5 được kế thừa từ lớp cơ sở
class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
1, lớp
class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
5 có thể sử dụng lại mã của
class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
1, cho phép lập trình viên sử dụng ít dòng mã hơn và giảm dự phòng.

Lớp phụ huynh

Các lớp cha mẹ hoặc cơ sở tạo ra một mẫu trong đó con hoặc các lớp con có thể dựa trên. Các lớp mẹ cho phép chúng tôi tạo các lớp con thông qua kế thừa mà không phải viết lại mã tương tự mỗi lần. Bất kỳ lớp nào cũng có thể được thực hiện thành một lớp cha mẹ, vì vậy chúng là mỗi lớp đầy đủ chức năng theo cách riêng của họ, thay vì chỉ các mẫu.

Hãy nói rằng chúng tôi có một lớp phụ huynh

class Trout(Fish):
1 nói chung có các lớp con
class Trout(Fish):
2 và
class Trout(Fish):
3. Nhiều phương pháp giữa tài khoản cá nhân và doanh nghiệp sẽ tương tự nhau, chẳng hạn như các phương thức rút và gửi tiền, vì vậy chúng có thể thuộc loại phụ huynh của
class Trout(Fish):
1. Lớp con
class Trout(Fish):
3 sẽ có các phương pháp cụ thể cho nó, bao gồm cả cách thu thập hồ sơ và biểu mẫu kinh doanh, cũng như biến
class Trout(Fish):
6.

Tương tự, một lớp

class Trout(Fish):
7 có thể có các phương thức
class Trout(Fish):
8 và
class Trout(Fish):
9 và phân lớp
...
class Trout(Fish):
    pass
0 có thể bao gồm các phương thức
...
class Trout(Fish):
    pass
1 và ____42 cụ thể của riêng nó.

Hãy cùng tạo ra một lớp phụ huynh

...
class Trout(Fish):
    pass
3 mà sau này chúng ta sẽ sử dụng để xây dựng các loại cá làm các lớp con của nó. Mỗi con cá này sẽ có tên và tên cuối cùng ngoài các đặc điểm.

Thông tin: Để làm theo cùng với mã ví dụ trong hướng dẫn này, hãy mở vỏ tương tác Python trên hệ thống cục bộ của bạn bằng cách chạy lệnh

...
class Trout(Fish):
    pass
4. Sau đó, bạn có thể sao chép, dán hoặc chỉnh sửa các ví dụ bằng cách thêm chúng sau dấu nhắc
...
class Trout(Fish):
    pass
5.
To follow along with the example code in this tutorial, open a Python interactive shell on your local system by running the
...
class Trout(Fish):
    pass
4 command. Then you can copy, paste, or edit the examples by adding them after the
...
class Trout(Fish):
    pass
5 prompt.

Chúng tôi sẽ tạo một tệp mới có tên

...
class Trout(Fish):
    pass
6 và bắt đầu với phương thức trình xây dựng
...
class Trout(Fish):
    pass
7, mà chúng tôi sẽ cư trú với các biến lớp
...
class Trout(Fish):
    pass
8 và
class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
2 cho mỗi đối tượng hoặc lớp con
...
class Trout(Fish):
    pass
3.

fish.py

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

Chúng tôi đã khởi tạo biến

class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
2 của chúng tôi với chuỗi
...
class Trout(Fish):
    pass

terry = Trout("Terry")
print(terry.first_name + " " + terry.last_name)
print(terry.skeleton)
print(terry.eyelids)
terry.swim()
terry.swim_backwards()
2 vì chúng tôi biết rằng hầu hết các loài cá sẽ có tên này là tên cuối cùng của chúng.

Hãy để thêm một số phương pháp khác:

Cá.py

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")

Chúng tôi đã thêm các phương thức

...
class Trout(Fish):
    pass

terry = Trout("Terry")
print(terry.first_name + " " + terry.last_name)
print(terry.skeleton)
print(terry.eyelids)
terry.swim()
terry.swim_backwards()
3 và
...
class Trout(Fish):
    pass

terry = Trout("Terry")
print(terry.first_name + " " + terry.last_name)
print(terry.skeleton)
print(terry.eyelids)
terry.swim()
terry.swim_backwards()
4 vào lớp
...
class Trout(Fish):
    pass
3, để mọi lớp con cũng có thể sử dụng các phương pháp này.

Vì hầu hết các loài cá chúng ta sẽ tạo ra được coi là cá xương (vì trong chúng có một bộ xương được làm từ xương) thay vì cá sụn (như trong chúng có một bộ xương được làm từ sụn), chúng ta có thể thêm một vài Nhiều thuộc tính hơn cho phương thức

...
class Trout(Fish):
    pass
7:

fish.py

class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")

Xây dựng một lớp cha theo phương pháp tương tự như xây dựng bất kỳ lớp nào khác, ngoại trừ chúng tôi đang suy nghĩ về những phương pháp mà các lớp con sẽ có thể sử dụng một khi chúng tôi tạo ra chúng.

Lớp trẻ em

Trẻ em hoặc các lớp con là các lớp sẽ kế thừa từ lớp cha. Điều đó có nghĩa là mỗi lớp trẻ sẽ có thể sử dụng các phương thức và biến của lớp cha.

Ví dụ: một lớp con

...
class Trout(Fish):
    pass

terry = Trout("Terry")
print(terry.first_name + " " + terry.last_name)
print(terry.skeleton)
print(terry.eyelids)
terry.swim()
terry.swim_backwards()
7 được sắp xếp lớp
...
class Trout(Fish):
    pass
3 sẽ có thể sử dụng phương pháp
...
class Trout(Fish):
    pass

terry = Trout("Terry")
print(terry.first_name + " " + terry.last_name)
print(terry.skeleton)
print(terry.eyelids)
terry.swim()
terry.swim_backwards()
3 được khai báo trong
...
class Trout(Fish):
    pass
3 mà không cần phải khai báo.

Chúng ta có thể nghĩ về từng lớp trẻ là một lớp của lớp cha. Đó là, nếu chúng ta có một lớp con được gọi là

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
1 và một lớp cha mẹ gọi là

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
2, chúng ta có thể nói rằng

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
1 là

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
2, giống như
...
class Trout(Fish):
    pass

terry = Trout("Terry")
print(terry.first_name + " " + terry.last_name)
print(terry.skeleton)
print(terry.eyelids)
terry.swim()
terry.swim_backwards()
7 là
...
class Trout(Fish):
    pass
3.is a

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
2, just as a
...
class Trout(Fish):
    pass

terry = Trout("Terry")
print(terry.first_name + " " + terry.last_name)
print(terry.skeleton)
print(terry.eyelids)
terry.swim()
terry.swim_backwards()
7 is a
...
class Trout(Fish):
    pass
3.

Dòng đầu tiên của một lớp trẻ em trông hơi khác so với các lớp không phải con vì bạn phải chuyển lớp cha vào lớp con dưới dạng tham số:

class Trout(Fish):

Lớp

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
7 là một đứa trẻ của lớp
...
class Trout(Fish):
    pass
3. Chúng tôi biết điều này vì sự bao gồm của từ
...
class Trout(Fish):
    pass
3 trong ngoặc đơn.

Với các lớp con, chúng ta có thể chọn thêm nhiều phương thức, ghi đè các phương thức cha mẹ hiện có hoặc chấp nhận các phương thức cha mẹ mặc định với từ khóa

...
class Clownfish(Fish):

    def live_with_anemone(self):
        print("The clownfish is coexisting with sea anemone.")
0 mà chúng tôi sẽ làm trong trường hợp này:

fish.py

...
class Trout(Fish):
    pass

Bây giờ chúng ta có thể tạo một đối tượng

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
7 mà không phải xác định bất kỳ phương thức bổ sung nào.

fish.py

...
class Trout(Fish):
    pass

terry = Trout("Terry")
print(terry.first_name + " " + terry.last_name)
print(terry.skeleton)
print(terry.eyelids)
terry.swim()
terry.swim_backwards()

Chúng tôi đã tạo ra một đối tượng

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
7
...
class Clownfish(Fish):

    def live_with_anemone(self):
        print("The clownfish is coexisting with sea anemone.")
3 sử dụng từng phương pháp của lớp
...
class Trout(Fish):
    pass
3 mặc dù chúng tôi không xác định các phương pháp đó trong lớp trẻ

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
7. Chúng tôi chỉ cần chuyển giá trị của
...
class Clownfish(Fish):

    def live_with_anemone(self):
        print("The clownfish is coexisting with sea anemone.")
6 cho biến
...
class Trout(Fish):
    pass
8 vì tất cả các biến khác đã được khởi tạo.

Khi chúng tôi chạy chương trình, chúng tôi sẽ nhận được đầu ra sau:

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.

Tiếp theo, hãy để Lôi tạo một lớp trẻ khác bao gồm phương pháp riêng của nó. Chúng tôi sẽ gọi lớp này

...
class Clownfish(Fish):

    def live_with_anemone(self):
        print("The clownfish is coexisting with sea anemone.")
8 và phương pháp đặc biệt của nó sẽ cho phép nó sống với hải quỳ biển:

fish.py

...
class Clownfish(Fish):

    def live_with_anemone(self):
        print("The clownfish is coexisting with sea anemone.")

Tiếp theo, hãy để Lôi tạo một đối tượng

...
class Clownfish(Fish):

    def live_with_anemone(self):
        print("The clownfish is coexisting with sea anemone.")
8 để xem cách thức hoạt động của nó:

fish.py

...
casey = Clownfish("Casey")
print(casey.first_name + " " + casey.last_name)
casey.swim()
casey.live_with_anemone()

Khi chúng tôi chạy chương trình, chúng tôi sẽ nhận được đầu ra sau:

Output

Casey Fish The fish is swimming. The clownfish is coexisting with sea anemone.

Tiếp theo, hãy để Lôi tạo một lớp trẻ khác bao gồm phương pháp riêng của nó. Chúng tôi sẽ gọi lớp này

...
class Clownfish(Fish):

    def live_with_anemone(self):
        print("The clownfish is coexisting with sea anemone.")
8 và phương pháp đặc biệt của nó sẽ cho phép nó sống với hải quỳ biển:

Tiếp theo, hãy để Lôi tạo một đối tượng

...
class Clownfish(Fish):

    def live_with_anemone(self):
        print("The clownfish is coexisting with sea anemone.")
8 để xem cách thức hoạt động của nó:

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
0

Đầu ra cho thấy đối tượng

...
class Clownfish(Fish):

    def live_with_anemone(self):
        print("The clownfish is coexisting with sea anemone.")
8
...
casey = Clownfish("Casey")
print(casey.first_name + " " + casey.last_name)
casey.swim()
casey.live_with_anemone()
1 có thể sử dụng các phương thức
...
class Trout(Fish):
    pass
3
...
class Trout(Fish):
    pass
7 và
...
class Trout(Fish):
    pass

terry = Trout("Terry")
print(terry.first_name + " " + terry.last_name)
print(terry.skeleton)
print(terry.eyelids)
terry.swim()
terry.swim_backwards()
3 cũng như phương pháp lớp con của nó là
...
casey = Clownfish("Casey")
print(casey.first_name + " " + casey.last_name)
casey.swim()
casey.live_with_anemone()
5.

Nếu chúng ta cố gắng sử dụng phương thức

...
casey = Clownfish("Casey")
print(casey.first_name + " " + casey.last_name)
casey.swim()
casey.live_with_anemone()
5 trong đối tượng

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
7, chúng ta sẽ nhận được lỗi:

Điều này là do phương pháp ... casey = Clownfish("Casey") print(casey.first_name + " " + casey.last_name) casey.swim() casey.live_with_anemone() 5 chỉ thuộc về lớp con ... class Clownfish(Fish): def live_with_anemone(self): print("The clownfish is coexisting with sea anemone.") 8 chứ không phải lớp phụ huynh ... class Trout(Fish): pass 3.

Các lớp con kế thừa các phương pháp của lớp cha mà nó thuộc về, vì vậy mỗi lớp con có thể sử dụng các phương pháp đó trong các chương trình.override them.

Ghi đè các phương thức cha mẹ

Cho đến nay, chúng tôi đã xem xét lớp con

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
7 đã sử dụng từ khóa
...
class Clownfish(Fish):

    def live_with_anemone(self):
        print("The clownfish is coexisting with sea anemone.")
0 để kế thừa tất cả các hành vi của lớp phụ huynh
...
class Trout(Fish):
    pass
3 và một lớp con khác
...
class Clownfish(Fish):

    def live_with_anemone(self):
        print("The clownfish is coexisting with sea anemone.")
8 kế thừa tất cả các hành vi của lớp cha và cũng tạo ra phương pháp duy nhất của riêng mình đó là cụ thể cho lớp trẻ. Tuy nhiên, đôi khi, chúng tôi sẽ muốn sử dụng một số hành vi của lớp cha nhưng không phải tất cả chúng. Khi chúng tôi thay đổi các phương thức lớp cha, chúng tôi ghi đè chúng.

Khi xây dựng các lớp cha mẹ và con cái, điều quan trọng là phải ghi nhớ thiết kế chương trình để việc ghi đè không tạo ra mã không cần thiết hoặc dự phòng.

Chúng tôi sẽ tạo ra một lớp con

Output

Casey Fish The fish is swimming. The clownfish is coexisting with sea anemone.
5 của lớp phụ huynh
...
class Trout(Fish):
    pass
3. Bởi vì chúng tôi đã tạo ra lớp
...
class Trout(Fish):
    pass
3 với ý tưởng rằng chúng tôi sẽ tạo ra cá xương chủ yếu, chúng tôi sẽ phải điều chỉnh cho lớp

Output

Casey Fish The fish is swimming. The clownfish is coexisting with sea anemone.
5 thay vào đó là một con cá sụn. Về mặt thiết kế chương trình, nếu chúng ta có nhiều cá không xương, rất có thể chúng ta muốn tạo ra các lớp riêng cho mỗi loại cá này.

fish.py

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
1

Cá mập, không giống như cá xương, có bộ xương làm từ sụn thay vì xương. Họ cũng có mí mắt và không thể bơi ngược. Cá mập có thể, tuy nhiên, tự điều khiển ngược lại bằng cách chìm.

Theo điều này, chúng tôi sẽ ghi đè phương thức xây dựng

...
class Trout(Fish):
    pass
7 và phương thức
...
class Trout(Fish):
    pass

terry = Trout("Terry")
print(terry.first_name + " " + terry.last_name)
print(terry.skeleton)
print(terry.eyelids)
terry.swim()
terry.swim_backwards()
4. Chúng tôi không cần phải sửa đổi phương pháp
...
class Trout(Fish):
    pass

terry = Trout("Terry")
print(terry.first_name + " " + terry.last_name)
print(terry.skeleton)
print(terry.eyelids)
terry.swim()
terry.swim_backwards()
3 vì cá mập là cá có thể bơi. Hãy để xem lại lớp trẻ em này:

Chúng tôi đã ghi đè các tham số được khởi tạo trong phương thức

...
class Trout(Fish):
    pass
7, do đó biến
class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
2 hiện được đặt bằng chuỗi
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
04, biến ____105 hiện được đặt bằng chuỗi
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
06 và biến
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
07 hiện được đặt thành giá trị boolean ____. Mỗi phiên bản của lớp cũng có thể ghi đè các tham số này.

fish.py

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
2

Phương pháp

...
class Trout(Fish):
    pass

terry = Trout("Terry")
print(terry.first_name + " " + terry.last_name)
print(terry.skeleton)
print(terry.eyelids)
terry.swim()
terry.swim_backwards()
4 hiện in một chuỗi khác so với lớp trong lớp cha mẹ
...
class Trout(Fish):
    pass
3 vì cá mập không thể bơi ngược theo cách mà cá xương có thể.

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
3

Bây giờ chúng ta có thể tạo một thể hiện của lớp con

Output

Casey Fish The fish is swimming. The clownfish is coexisting with sea anemone.
5, vẫn sẽ sử dụng phương pháp
...
class Trout(Fish):
    pass

terry = Trout("Terry")
print(terry.first_name + " " + terry.last_name)
print(terry.skeleton)
print(terry.eyelids)
terry.swim()
terry.swim_backwards()
3 của lớp phụ huynh
...
class Trout(Fish):
    pass
3:

Khi chúng tôi chạy mã này, chúng tôi sẽ nhận được đầu ra sau:

Hàm class Fish: def __init__(self, first_name, last_name="Fish", skeleton="bone", eyelids=False): self.first_name = first_name self.last_name = last_name self.skeleton = skeleton self.eyelids = eyelids def swim(self): print("The fish is swimming.") def swim_backwards(self): print("The fish can swim backwards.") 0

Với chức năng

class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
0, bạn có thể có quyền truy cập vào các phương thức được kế thừa đã được ghi đè trong một đối tượng lớp.

Khi chúng tôi sử dụng hàm

class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
0, chúng tôi đang gọi phương thức cha mẹ vào phương thức con để sử dụng nó. Ví dụ: chúng ta có thể muốn ghi đè một khía cạnh của phương thức cha với chức năng nhất định, nhưng sau đó gọi phần còn lại của phương thức cha mẹ gốc để hoàn thành phương thức.

Trong một chương trình học sinh lớp, chúng tôi có thể muốn có một lớp con cho

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
22 kế thừa từ lớp phụ huynh
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
23. Trong lớp con
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
22, chúng tôi có thể muốn ghi đè một phương thức
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
25 của lớp cha để bao gồm chức năng để tính toán một cấp độ, nhưng vẫn giữ phần còn lại của chức năng của lớp ban đầu. Bằng cách gọi chức năng
class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
0, chúng tôi sẽ có thể đạt được điều này.

Hàm

class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
0 được sử dụng phổ biến nhất trong phương thức
...
class Trout(Fish):
    pass
7 vì đó là nơi bạn rất có thể cần thêm một số tính độc đáo vào lớp con và sau đó hoàn thành khởi tạo từ cha mẹ.

Để xem cách thức hoạt động của nó, hãy để sửa đổi lớp con

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
7 của chúng tôi. Vì cá hồi thường là cá nước ngọt, hãy để thêm một biến
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
30 vào phương thức
...
class Trout(Fish):
    pass
7 và đặt nó bằng chuỗi
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
32, nhưng sau đó duy trì phần còn lại của các biến và tham số của lớp cha mẹ::

fish.py

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
4

Chúng tôi đã ghi đè phương thức

...
class Trout(Fish):
    pass
7 trong lớp con

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
7, cung cấp một triển khai khác của
...
class Trout(Fish):
    pass
7 đã được xác định bởi lớp cha
...
class Trout(Fish):
    pass
3 của nó. Trong phương thức
...
class Trout(Fish):
    pass
7 của lớp

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
7 của chúng tôi, chúng tôi đã gọi rõ phương pháp
...
class Trout(Fish):
    pass
7 của lớp
...
class Trout(Fish):
    pass
3.

Bởi vì chúng tôi đã ghi đè phương thức, chúng tôi không còn cần phải vượt qua

...
class Trout(Fish):
    pass
8 dưới dạng tham số cho

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
7 và nếu chúng tôi vượt qua tham số, chúng tôi sẽ đặt lại
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
43 thay thế. Do đó, chúng tôi sẽ khởi tạo
...
class Trout(Fish):
    pass
8 bằng cách gọi biến trong thể hiện đối tượng của chúng tôi.

Bây giờ chúng ta có thể gọi các biến khởi tạo của lớp cha và cũng sử dụng biến con duy nhất. Hãy để sử dụng điều này trong một ví dụ

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
7:

fish.py

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
5
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
6

Đầu ra cho thấy đối tượng

...
class Clownfish(Fish):

    def live_with_anemone(self):
        print("The clownfish is coexisting with sea anemone.")
3 của lớp con

Output

Terry Fish bone False The fish is swimming. The fish can swim backwards.
7 có thể sử dụng cả biến
...
class Trout(Fish):
    pass
7 dành riêng cho trẻ em
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
30 trong khi cũng có thể gọi các biến
...
class Trout(Fish):
    pass
7 của phụ huynh
...
class Trout(Fish):
    pass
3 của
...
class Trout(Fish):
    pass
8,
class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
2.

Hàm Python tích hợp

class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
0 cho phép chúng tôi sử dụng các phương thức lớp cha ngay cả khi ghi đè lên các khía cạnh nhất định của các phương pháp đó trong các lớp con của chúng tôi.

Nhiều kế thừa

Nhiều kế thừa là khi một lớp có thể kế thừa các thuộc tính và phương thức từ nhiều lớp cha. Điều này có thể cho phép các chương trình giảm dự phòng, nhưng nó cũng có thể giới thiệu một số lượng phức tạp cũng như sự mơ hồ nhất định, vì vậy nó nên được thực hiện với suy nghĩ về thiết kế chương trình tổng thể. is when a class can inherit attributes and methods from more than one parent class. This can allow programs to reduce redundancy, but it can also introduce a certain amount of complexity as well as ambiguity, so it should be done with thought to overall program design.

Để hiển thị cách thức hoạt động của nhiều kế thừa, hãy để Lôi tạo một lớp con

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
56 so với kế thừa từ lớp
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
57 và lớp
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
58. Chúng ta có thể tạo một phương thức trong mỗi và sau đó sử dụng từ khóa
...
class Clownfish(Fish):

    def live_with_anemone(self):
        print("The clownfish is coexisting with sea anemone.")
0 trong lớp con
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
56:

coral_reef.py

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
7

Lớp

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
57 có một phương thức gọi là
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
62 in một dòng và lớp
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
63 có một phương thức gọi là
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
64 in một dòng khác. Sau đó, chúng tôi gọi cả hai lớp vào tuple thừa kế. Điều này có nghĩa là
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
65 đang kế thừa từ hai lớp cha.

Bây giờ hãy khởi tạo một đối tượng

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
65:

coral_reef.py

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
8

Đối tượng

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
67 được đặt thành đối tượng
class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
65 và có thể sử dụng các phương thức trong cả hai lớp cha. Khi chúng tôi chạy chương trình, chúng tôi sẽ thấy đầu ra sau:

class Fish:
    def __init__(self, first_name, last_name="Fish"):
        self.first_name = first_name
        self.last_name = last_name

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
9

Đầu ra cho thấy các phương pháp từ cả hai lớp cha được sử dụng hiệu quả trong lớp con.

Nhiều kế thừa cho phép chúng tôi sử dụng mã từ nhiều lớp cha trong lớp con. Nếu cùng một phương thức được xác định trong nhiều phương thức cha mẹ, lớp con sẽ sử dụng phương thức của cha mẹ đầu tiên được khai báo trong danh sách tuple của nó.

Mặc dù nó có thể được sử dụng một cách hiệu quả, nên nhiều kế thừa nên được thực hiện một cách cẩn thận để các chương trình của chúng tôi không trở nên mơ hồ và khó hiểu đối với các lập trình viên khác.

Sự kết luận

Hướng dẫn này đã trải qua việc xây dựng các lớp cha và các lớp con, ghi đè các phương thức và thuộc tính cha mẹ trong các lớp con, sử dụng hàm

class Fish:
    def __init__(self, first_name, last_name="Fish",
                 skeleton="bone", eyelids=False):
        self.first_name = first_name
        self.last_name = last_name
        self.skeleton = skeleton
        self.eyelids = eyelids

    def swim(self):
        print("The fish is swimming.")

    def swim_backwards(self):
        print("The fish can swim backwards.")
0 và cho phép các lớp con được thừa hưởng từ nhiều lớp cha.

Kế thừa trong mã hóa hướng đối tượng có thể cho phép tuân thủ nguyên tắc phát triển phần mềm khô (không lặp lại), cho phép thực hiện nhiều hơn với ít mã và lặp lại. Kế thừa cũng buộc các lập trình viên phải suy nghĩ về cách họ đang thiết kế các chương trình họ đang tạo để đảm bảo rằng mã có hiệu quả và rõ ràng.

Làm thế nào để bạn sử dụng lớp phụ huynh trong Python?

Điều này thường có thể đạt được bằng hai cách. Sử dụng ClassName: Các phương thức lớp của cha mẹ có thể được gọi bằng cách sử dụng ClassName.method bên trong phương thức ghi đè. Sử dụng hàm Super (): Python Super () cung cấp cho chúng tôi cơ sở để chỉ lớp cha mẹ một cách rõ ràng.Parent's class methods can be called by using the Parent classname. method inside the overridden method. Using Super(): Python super() function provides us the facility to refer to the parent class explicitly.

Lớp phụ huynh của lớp cha là gì?

Trong lập trình hướng đối tượng, chúng ta có thể kế thừa các đặc điểm của lớp cha.Lớp phụ huynh được gọi là lớp cơ sở trong khi lớp con được gọi là lớp dẫn xuất.Lớp dẫn xuất có thể kế thừa các thành viên dữ liệu, chức năng thành viên của lớp cơ sở.base class while child class is known as derived class. The derived class can inherit data members, member functions of base class.

Làm thế nào để bạn tìm thấy lớp cha mẹ của một lớp học trong Python?

Python IssubClass () là chức năng tích hợp được sử dụng để kiểm tra xem một lớp có phải là lớp con của lớp khác hay không.Hàm này trả về true nếu lớp đã cho là lớp con của lớp đã cho khác, nó trả về sai. is built-in function used to check if a class is a subclass of another class or not. This function returns True if the given class is the subclass of given class else it returns False.

Có phải lớp siêu lớp và phụ huynh giống nhau không?

Định nghĩa: Một lớp có nguồn gốc từ một lớp khác được gọi là một lớp con (cũng là lớp dẫn xuất, lớp mở rộng hoặc lớp con).Lớp mà lớp con có nguồn gốc được gọi là siêu lớp (cũng là lớp cơ sở hoặc lớp cha).The class from which the subclass is derived is called a superclass (also a base class or a parent class).