Lớp python không kế thừa thuộc tính

Kế thừa là khả năng của một lớp [lớp con/lớp dẫn xuất/lớp con] để lấy hoặc kế thừa các thuộc tính hoặc thuộc tính từ một số lớp khác [lớp cha/lớp cơ sở]. Kế thừa làm tăng khả năng sử dụng lại mã. Chúng ta không cần phải viết đi viết lại cùng một mã. Kế thừa nó cho phép các lập trình viên thêm nhiều tính năng hơn vào một lớp hoặc sửa đổi hành vi hiện có

Kế thừa đơn giản

Hãy xem thủ tục thừa kế đơn giản này

Phương thức

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
1 được định nghĩa trong lớp
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
2 không phải trong lớp
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
3. Khi chúng ta kế thừa từ lớp cơ sở [ở dòng 9], chúng ta sẽ lấy các thuộc tính và thuộc tính của nó cho lớp con. Đó là lý do tại sao chúng ta có quyền truy cập vào phương thức
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
1 ở lớp con và các đối tượng của nó [ở dòng 18 và 19]

Các thuộc tính, thuộc tính hoặc phương thức của lớp cơ sở sẽ có sẵn cho lớp con chứ không phải ngược lại. Nếu chúng tôi viết

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
0 thì chúng tôi sẽ gặp lỗi như.
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
1 bởi vì, phương thức
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
2 được định nghĩa trong lớp con, không phải trong lớp cha

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
3

Python hỗ trợ kế thừa đa cấp. Khi một lớp được dẫn xuất từ ​​một lớp cũng được dẫn xuất từ ​​một lớp khác [một lớp có nhiều hơn một lớp cha] thì sự kế thừa như vậy được gọi là Kế thừa đa cấp. Mức độ thừa kế có thể được mở rộng đến bất kỳ cấp độ nào tùy thuộc vào mối quan hệ

Ở đây,

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
4 chỉ có phương thức
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
5,
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
6 có phương thức
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
5 và
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
8 [vì lớp B mở rộng lớp A] và
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
9 có phương thức
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
5 ,
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
8 và
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
22 [vì lớp C mở rộng lớp B và lớp B mở rộng c]

Kế thừa có tính chất bắc cầu [có nghĩa là nếu lớp B kế thừa từ lớp A khác, thì tất cả các lớp con của B sẽ tự động kế thừa từ lớp A]

đa thừa kế

Python hỗ trợ đa kế thừa, trong đó một lớp có thể có nhiều lớp cha

Ở đây,

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
9 kéo dài cả
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
4 và
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
6, đó là lý do tại sao các phương thức của
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
4 và
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
6 có sẵn cho lớp C

Thứ tự giải quyết phương pháp [MRO]

Hãy bắt đầu thưởng thức trò chơi của bài viết này

Ở đây, chúng ta có hai phương thức

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
28 trong
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
4 và
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
6.
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
9 kéo dài cả
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
4 và
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
6. Vì vậy,
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
9 nhận cả hai phương thức của
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
28. Sau đó, những gì sẽ được xuất ra ở dòng 16?

Đối với hệ thống phân cấp lớp, Python cần xác định lớp nào sẽ sử dụng khi cố gắng truy cập một thuộc tính theo tên. Để làm điều này, Python xem xét thứ tự của các lớp cơ sở

Đối với đoạn mã trước, phương thức

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
28 của
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
4 sẽ được thực thi và chúng ta sẽ nhận được đầu ra “class A speak”. Chúng ta thay đổi
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
88 [tại dòng, 11] thành
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
89 thì phương thức
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
28 của
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
6 sẽ được thực thi và chúng ta sẽ nhận được đầu ra “class B speak”

Hãy thay đổi mã của

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
9 như thế nào

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
3

Ở đây, phương thức

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
28 của
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
9 sẽ ghi đè phương thức
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
28 trước đó. Và
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
76 sẽ in ra “class C speak”

Bây giờ, theo cuộc thảo luận của chúng tôi về MRO, hãy đoán xem đầu ra của mã này sẽ là gì

chúc mừng. bạn hoàn toàn đúng. Đầu ra sẽ là “A”

Triết lý nhỏ về thừa kế

Hãy xem xét một kịch bản mối quan hệ như

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]

Lưu ý rằng, cả

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
77 và
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
78 đều có thuộc tính
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
79 và cả hai đều giống hệt nhau. Nếu
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
78 sẽ mở rộng lớp
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
77 thì chúng ta chỉ cần viết thuộc tính
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
42 trong lớp
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
78. Nhưng chúng tôi đã không làm điều đó. Bởi vì, không hẳn người nhà cũng sẽ là bạn mà người nhà nhất định sẽ là người. Vì vậy, triết lý là, để kế thừa, cấu trúc giai cấp phải phản ánh đúng mối quan hệ giữa các giai cấp

Vài lời về `siêu`

Đôi khi chúng ta cần gọi các phương thức của lớp cha tới một phương thức bị ghi đè của lớp con. Chúng ta có thể đạt được điều này bằng hàm

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
44. Chúng ta có thể trực tiếp sử dụng các phương thức của super class hoặc sửa đổi chúng [điều này rất phổ biến]

Chúng ta có thể viết

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
6 như

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
2

Nhìn vào super[B, self] [ở đây,

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
44 có hai đối số. một lớp và đối tượng của nó]. Đây là một cách gọi khác của
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
44

Sự khác biệt giữa super[] và super[className, self]

Python 3 khuyến khích sử dụng

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
48, thay vì sử dụng
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
49, cả hai đều có tác dụng như nhau. Python 2, chỉ hỗ trợ cú pháp
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
49. Vì Python 2 được sử dụng rộng rãi nên Python 3 cũng hỗ trợ cho kiểu gọi
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
44 này. Bạn biết thêm về siêu ở đây

nội quan

Vì python hỗ trợ các loại kế thừa khác nhau nên đôi khi nó cần được xem xét kỹ lưỡng

  • class Contact:
    name = TextField[]
    email = EmailAddressField[]


    class Person[Contact]:
    first_name = TextField[]
    last_name = TextField[]


    class Friend[Person]:
    relationship_details = TextField[]


    class FamilyMember[Person]:
    relationship_details = TextField[]
    family_members = IntegetField[]
    12.
    class Contact:
    name = TextField[]
    email = EmailAddressField[]


    class Person[Contact]:
    first_name = TextField[]
    last_name = TextField[]


    class Friend[Person]:
    relationship_details = TextField[]


    class FamilyMember[Person]:
    relationship_details = TextField[]
    family_members = IntegetField[]
    12 có hai đối số. một đối tượng và một lớp. Nó trả về
    class Contact:
    name = TextField[]
    email = EmailAddressField[]


    class Person[Contact]:
    first_name = TextField[]
    last_name = TextField[]


    class Friend[Person]:
    relationship_details = TextField[]


    class FamilyMember[Person]:
    relationship_details = TextField[]
    family_members = IntegetField[]
    14 nếu lớp đã cho nằm ở bất kỳ đâu trong chuỗi kế thừa của lớp đối tượng

Đầu ra.
Đúng
Đúng

Tại dòng 11, chúng tôi nhận được

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
14 vì
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
16 là đối tượng của
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
4.
Tại dòng 12, chúng tôi nhận được
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
14 vì
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
4 nằm trong chuỗi kế thừa của lớp đối tượng
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
20.

  • class Contact:
    name = TextField[]
    email = EmailAddressField[]


    class Person[Contact]:
    first_name = TextField[]
    last_name = TextField[]


    class Friend[Person]:
    relationship_details = TextField[]


    class FamilyMember[Person]:
    relationship_details = TextField[]
    family_members = IntegetField[]
    21.
    class Contact:
    name = TextField[]
    email = EmailAddressField[]


    class Person[Contact]:
    first_name = TextField[]
    last_name = TextField[]


    class Friend[Person]:
    relationship_details = TextField[]


    class FamilyMember[Person]:
    relationship_details = TextField[]
    family_members = IntegetField[]
    21 nhận hai đối số [lớp, lớp]. Nó trả về
    class Contact:
    name = TextField[]
    email = EmailAddressField[]


    class Person[Contact]:
    first_name = TextField[]
    last_name = TextField[]


    class Friend[Person]:
    relationship_details = TextField[]


    class FamilyMember[Person]:
    relationship_details = TextField[]
    family_members = IntegetField[]
    14 nếu lớp đầu tiên chứa lớp thứ hai ở bất kỳ đâu trong chuỗi thừa kế của nó

Đầu ra.
Đúng
Đúng

Đầu ra ở dòng 15 có vẻ ổn nhưng đầu ra ở dòng 16 có thể trông kỳ lạ. Rõ ràng,

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
24 không phải là lớp con của chính nó [
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
24 ], nhưng Python hoạt động theo cách này

  • class Contact:
    name = TextField[]
    email = EmailAddressField[]


    class Person[Contact]:
    first_name = TextField[]
    last_name = TextField[]


    class Friend[Person]:
    relationship_details = TextField[]


    class FamilyMember[Person]:
    relationship_details = TextField[]
    family_members = IntegetField[]
    26.
    class Contact:
    name = TextField[]
    email = EmailAddressField[]


    class Person[Contact]:
    first_name = TextField[]
    last_name = TextField[]


    class Friend[Person]:
    relationship_details = TextField[]


    class FamilyMember[Person]:
    relationship_details = TextField[]
    family_members = IntegetField[]
    26 cung cấp một bộ các lớp cơ sở trực tiếp của một lớp

Đầu ra.
[
[
[
[

Ghi chú. Theo mặc định, mọi lớp Python là lớp con của lớp

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
28 tích hợp

  • ____629.
    class Contact:
    name = TextField[]
    email = EmailAddressField[]


    class Person[Contact]:
    first_name = TextField[]
    last_name = TextField[]


    class Friend[Person]:
    relationship_details = TextField[]


    class FamilyMember[Person]:
    relationship_details = TextField[]
    family_members = IntegetField[]
    29 trả về danh sách tất cả
    các lớp con của một lớp. Giống như
    class Contact:
    name = TextField[]
    email = EmailAddressField[]


    class Person[Contact]:
    first_name = TextField[]
    last_name = TextField[]


    class Friend[Person]:
    relationship_details = TextField[]


    class FamilyMember[Person]:
    relationship_details = TextField[]
    family_members = IntegetField[]
    26 ,
    class Contact:
    name = TextField[]
    email = EmailAddressField[]


    class Person[Contact]:
    first_name = TextField[]
    last_name = TextField[]


    class Friend[Person]:
    relationship_details = TextField[]


    class FamilyMember[Person]:
    relationship_details = TextField[]
    family_members = IntegetField[]
    32 chỉ đi sâu một cấp so với lớp chúng tôi đang làm việc.
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
8

đầu ra

  • class Contact:
    name = TextField[]
    email = EmailAddressField[]


    class Person[Contact]:
    first_name = TextField[]
    last_name = TextField[]


    class Friend[Person]:
    relationship_details = TextField[]


    class FamilyMember[Person]:
    relationship_details = TextField[]
    family_members = IntegetField[]
    33.
    class Contact:
    name = TextField[]
    email = EmailAddressField[]


    class Person[Contact]:
    first_name = TextField[]
    last_name = TextField[]


    class Friend[Person]:
    relationship_details = TextField[]


    class FamilyMember[Person]:
    relationship_details = TextField[]
    family_members = IntegetField[]
    33 là một thuộc tính chứa đầy đủ MRO [Thứ tự giải quyết phương thức] của một lớp dưới dạng một bộ
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
7

Đầu ra.
[

Một trò chơi khác sử dụng __init__ và __new__

Chuyển đổi từ lớp sang đối tượng được gọi là khởi tạo.

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
35 được sử dụng để khởi tạo đối tượng. Bên trong chức năng
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
35 chỉ nên khởi tạo chức năng, không có gì hơn

Đây là mã mẫu sử dụng

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
35

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
4

Trong quá trình tạo đối tượng, phương thức

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
35 không được thực thi trước, phương thức được thực thi trước là
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
39. Phương thức
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
10 nhận hầu hết các đối số giống nhau tại
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
35 và nó chịu trách nhiệm thực sự tạo đối tượng mới [trước khi khởi tạo đối tượng]

Chúng ta có thể sử dụng

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
39 khi cần kiểm soát việc tạo một thể hiện mới

Giả sử chúng ta có 3 lớp,

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
13,
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
14 và
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
15. Chúng tôi cần khởi tạo
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
16 cho tệp Văn bản,
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
17 cho tệp hình ảnh và
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
13 cho các loại tệp khác. Chúng ta có thể có được điều này bằng cách khởi tạo chúng trực tiếp

Nhưng nếu chúng ta có thể khởi tạo chúng chỉ bằng cách sử dụng lớp cha [

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
13 ] tùy thuộc vào nội dung tệp thì sao? .
Khá thú vị, KHÔNG?

Đầu ra.


Ở đây, chúng tôi đang khởi tạo các lớp

class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
16, ____617 và
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
13 bằng cách sử dụng lớp
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
13 [cha] tùy thuộc vào nội dung của tệp [
class Contact:
name = TextField[]
email = EmailAddressField[]


class Person[Contact]:
first_name = TextField[]
last_name = TextField[]


class Friend[Person]:
relationship_details = TextField[]


class FamilyMember[Person]:
relationship_details = TextField[]
family_members = IntegetField[]
04]. Xem sự khác biệt giữa các đầu ra của dòng 35, 36 và 37

Đó là tất cả cho trò chơi ngày hôm nay

Chúc bạn chơi game vui vẻ với Python

Bạn cũng có thể đọc
  1. Hiểu về trình trang trí Python
  2. Các chức năng như đối tượng hạng nhất trong Python
  3. Đóng cửa bằng Python và Javascript
  4. Bảng điều hướng phản ứng
  5. priority_queue tối thiểu trong C++

Câu chuyện này được xuất bản trong Đáng chú ý, nơi có hơn 10.000 độc giả đến mỗi ngày để tìm hiểu về con người và ý tưởng hình thành các sản phẩm mà chúng ta yêu thích

Các thuộc tính lớp có được kế thừa trong Python không?

Tính kế thừa cho phép chúng ta định nghĩa một lớp kế thừa tất cả các phương thức và thuộc tính từ một lớp khác . Lớp cha là lớp được kế thừa từ đó, còn được gọi là lớp cơ sở. Lớp con là lớp kế thừa từ lớp khác, còn gọi là lớp dẫn xuất.

Có phải mọi lớp Python đều kế thừa từ đối tượng không?

Tất cả các lớp trong Python đều là đối tượng của lớp kiểu, và lớp kiểu này được gọi là Metaclass. Mỗi lớp trong Python, theo mặc định, kế thừa từ lớp cơ sở đối tượng .

Làm cách nào để tạo một lớp kế thừa từ một lớp Python khác?

Để tạo một lớp kế thừa từ một lớp khác, sau tên lớp, bạn sẽ đặt dấu ngoặc đơn rồi liệt kê bất kỳ lớp nào mà lớp của bạn kế thừa. In a function definition, parentheses after the function name represent arguments that the function accepts.

Những thành viên lớp nào không thể được kế thừa?

Một lớp con không kế thừa các thành phần private của lớp cha.

Chủ Đề