Hướng dẫn is super () necessary python? - là siêu () trăn cần thiết?

Chức năng Python Super () cho phép chúng tôi tham khảo lớp cha một cách rõ ràng. Nó rất hữu ích trong trường hợp kế thừa nơi chúng tôi muốn gọi các chức năng siêu lớp.

Python Super

Để hiểu về chức năng Super Python, bạn phải biết về kế thừa Python. Trong kế thừa Python, các lớp con được thừa hưởng từ siêu lớp. Chức năng Python Super () cho phép chúng tôi giới thiệu siêu lớp ngầm. Vì vậy, Python Super làm cho nhiệm vụ của chúng tôi dễ dàng và thoải mái hơn. Trong khi giới thiệu siêu lớp từ lớp con, chúng tôi không cần phải viết tên của siêu lớp rõ ràng. Trong các phần sau, chúng tôi sẽ thảo luận về chức năng Super Python.

Ví dụ về chức năng siêu Python

Lúc đầu, chỉ cần nhìn vào mã sau đây chúng tôi đã sử dụng trong hướng dẫn kế thừa Python của chúng tôi. Trong mã ví dụ đó, siêu lớp là Person và lớp con là Student. Vì vậy, mã được hiển thị dưới đây.

class Person:
    # initializing the variables
    name = ""
    age = 0

    # defining constructor
    def __init__(self, person_name, person_age):
        self.name = person_name
        self.age = person_age

        # defining class methods

    def show_name(self):
        print(self.name)

    def show_age(self):
        print(self.age)


# definition of subclass starts here
class Student(Person):
    studentId = ""

    def __init__(self, student_name, student_age, student_id):
        Person.__init__(self, student_name, student_age)
        self.studentId = student_id

    def get_id(self):
        return self.studentId  # returns the value of student id


# end of subclass definition


# Create an object of the superclass
person1 = Person("Richard", 23)
# call member methods of the objects
person1.show_age()
# Create an object of the subclass
student1 = Student("Max", 22, "102")
print(student1.get_id())
student1.show_name()

Trong ví dụ trên, chúng tôi đã gọi chức năng lớp cha là:

Person.__init__(self, student_name, student_age) 

Chúng ta có thể thay thế điều này bằng cuộc gọi chức năng Super Python như dưới đây.

super().__init__(student_name, student_age)

Đầu ra sẽ vẫn giữ nguyên trong cả hai trường hợp, như thể hiện trong hình ảnh dưới đây.

Hướng dẫn is super () necessary python? - là siêu () trăn cần thiết?

Python 3 Super

Lưu ý rằng cú pháp trên là cho chức năng siêu Python 3. Nếu bạn đang sử dụng các phiên bản Python 2.x, thì nó hơi khác nhau và bạn sẽ phải thực hiện các thay đổi sau:

class Person(object):
...
        super(Student, self).__init__(student_name, student_age)

Thay đổi đầu tiên là có object là lớp cơ sở cho người. Nó bắt buộc phải sử dụng chức năng siêu trong các phiên bản Python 2.x. Nếu không, bạn sẽ nhận được lỗi sau.

Traceback (most recent call last):
  File "super_example.py", line 40, in 
    student1 = Student("Max", 22, "102")
  File "super_example.py", line 25, in __init__
    super(Student, self).__init__(student_name, student_age)
TypeError: must be type, not classobj

Thay đổi thứ hai trong cú pháp của chính hàm siêu. Như bạn có thể thấy rằng chức năng Super Python 3 dễ sử dụng hơn rất nhiều và cú pháp cũng trông sạch sẽ.

Chức năng siêu của Python với Di sản đa cấp

Như chúng tôi đã nói trước đây rằng hàm python () cho phép chúng tôi giới thiệu siêu lớp ngầm. Nhưng trong trường hợp thừa kế đa cấp, nó sẽ đề cập đến lớp nào? Chà, Python Super () sẽ luôn đề cập đến siêu lớp ngay lập tức. Ngoài ra hàm python siêu () không chỉ có thể tham khảo hàm

Person.__init__(self, student_name, student_age) 
0 mà còn có thể gọi tất cả các hàm khác của siêu lớp. Vì vậy, trong ví dụ sau, chúng ta sẽ thấy điều đó.

class A:
    def __init__(self):
        print('Initializing: class A')

    def sub_method(self, b):
        print('Printing from class A:', b)


class B(A):
    def __init__(self):
        print('Initializing: class B')
        super().__init__()

    def sub_method(self, b):
        print('Printing from class B:', b)
        super().sub_method(b + 1)


class C(B):
    def __init__(self):
        print('Initializing: class C')
        super().__init__()

    def sub_method(self, b):
        print('Printing from class C:', b)
        super().sub_method(b + 1)


if __name__ == '__main__':
    c = C()
    c.sub_method(1)

Hãy cùng xem đầu ra của ví dụ siêu 3 trên Python 3 với kế thừa đa cấp.

Initializing: class C
Initializing: class B
Initializing: class A
Printing from class C: 1
Printing from class B: 2
Printing from class A: 3

Vì vậy, từ đầu ra, chúng ta có thể thấy rõ rằng hàm

Person.__init__(self, student_name, student_age) 
0 của lớp C lúc đầu, sau đó lớp B và sau lớp A. Điều tương tự đã xảy ra bằng cách gọi hàm
Person.__init__(self, student_name, student_age) 
2.

Tại sao chúng ta cần chức năng Super Python

Nếu bạn có kinh nghiệm trước đây trong ngôn ngữ Java, thì bạn nên biết rằng lớp cơ sở cũng được gọi bởi một đối tượng siêu ở đó. Vì vậy, khái niệm này thực sự hữu ích cho các lập trình viên. Tuy nhiên, Python cũng giữ cơ sở cho lập trình viên sử dụng tên siêu lớp để giới thiệu chúng. Và, nếu chương trình của bạn chứa kế thừa đa cấp, thì hàm Super () này rất hữu ích cho bạn. Vì vậy, đó là tất cả về chức năng Super Python. Hy vọng, bạn đã hiểu chủ đề này. Vui lòng sử dụng hộp bình luận cho bất kỳ truy vấn.super object there. So, this concept is actually useful for the coders. However, Python also keeps the facility for the programmer to use superclass name to refer them. And, if your program contains multi-level inheritance, then this super() function is helpful for you. So, that’s all about python super function. Hopefully, you understood this topic. Please use the comment box for any query.

Bạn có thể kiểm tra toàn bộ tập lệnh Python và nhiều ví dụ về Python từ Kho lưu trữ GitHub của chúng tôi.

Tham khảo: Tài liệu chính thức

Là siêu cần thiết trong Python?

Super () trong Python. Để truy cập các thuộc tính lớp cha từ lớp con, bạn cần sử dụng phương thức Super (). Super () là một tham chiếu rõ ràng đến lớp cơ sở. Nó liên kết lớp cha mẹ của bạn với lớp con.To access parent class properties from the subclass, you need to use the super() method. The super() is an explicit reference to the base class. It links your parent class to the child class.

Điểm của Super () là gì?

Nó được sử dụng để gọi các phương thức siêu lớp và để truy cập vào hàm tạo siêu lớp.Việc sử dụng phổ biến nhất của Super Keyword là loại bỏ sự nhầm lẫn giữa các lớp học và các lớp con có các phương thức có cùng tên.to call superclass methods, and to access the superclass constructor. The most common use of the super keyword is to eliminate the confusion between superclasses and subclasses that have methods with the same name.

Phương pháp Super () đóng vai trò quan trọng như thế nào trong việc thừa kế?

Python |Super () Trong một kế thừa duy nhất ở cấp độ khá trừu tượng, Super () cung cấp quyền truy cập vào các phương thức của siêu lớp (lớp cha) đã được ghi đè trong một lớp phụ (lớp con) kế thừa từ nó.provides the access to those methods of the super-class (parent class) which have been overridden in a sub-class (child class) that inherits from it.

Python có tự động gọi Super không?

Nếu có siêu lớp [init] bạn muốn gọi, bạn phải gọi rõ ràng với họ với Super ().__init __ () đệ quy.Nếu không có [init] được xác định dọc theo đường dẫn cây, sẽ không có gì được gọi.Nó chỉ là một chức năng thông thường được gọi tự động một lần tại thời điểm xây dựng.It is just an ordinary function that is automatically called once at construction time.