почему у нас есть суперфункция, если мы можем вызвать исходную функцию класса баса с экземпляром класса баса? - PullRequest
0 голосов
/ 23 января 2019

Почему нам нужно использовать super(drived_class, self), если bass_class() может выполнять ту же работу, что именно делает суперфункция?Я носил некоторый код, пытаясь выяснить, но не получил много.Что такое <super: <class 'b'>, <b object>>?И есть ли причина, по которой он принимает себя в качестве второго параметра, в отличие от любой другой функции.

>>>class a(object):
...    def somefunc(self):
...        print("af function")
>>>class b(a):
...    def somefunc(self):
...        print("overriding af")
...    def recalling_bassclass_somefunc(self):
...        print("////")
...        print("recalling it via super func")
...        super(b,self).somefunc()
...        print("recalling it via super func with b() instead of self")
...        super(b,b()).somefunc()
...        print("recalling it via an a class object")
...        print(a().somefunc)
...        print("printing the a class")
...        print(a())
...        print("printing a type")
...        print(type(a()))
...        print("printing the super(b,self)")
...        print(super(b,self))
...        print("printing the super(b,self) type")
...        print(type(super(b,self)))
...        print(type(a()) == type(super(b,self)))
...        print(a() == super(b,self))
...a().somefunc()
...b().somefunc()
...b().recalling_bassclass_somefunc()
af function
overriding af
////
recalling it via super func
af function
recalling it via super func with b() instead of self
af function
recalling it via an a class object
<bound method a.somefunc of <__main__.a object at 0x00000201DCD207F0>>
printing the a class
<__main__.a object at 0x00000201DCCED748>
printing a type
<class '__main__.a'>
printing the super(b,self)
<super: <class 'b'>, <b object>>
printing the super(b,self) type
<class 'super'>
False
False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...