ПредишенСледващото

тип - вида, от който да започне да търси посредничеството. По-рано -py3.0 поле не е задължително.

OBJ-или тип - ако не е посочено, се връща несвързан медиация. Ако атрибутът е обект, той ще бъде получен посредник за метода на обекта, за който isinstance (OBJ, тип) връща True. Ако тази характеристика е от типа, който ще бъде получен за метода на медиатор-клас, който issubclass (подтип, тип) връща True.

Използва се за достъп до основните реализации наследени методи, включени в извлечен клас.

Редът за търсене е един и същ метод, като този на getattr (). Само тип пропуска: тип атрибут има __mro__. определя реда, по който техники за търсене, използвани като getattr (). и супер (). Умение е динамична и може да се промени при актуализирането на йерархията наследство.

Типични приложения на супер ()

1. В йерархия с единично наследяване се използва за обозначаване на родителския клас изрично да посочи имената им, той опростява поддръжката на код в бъдеще. Този начин на употреба има роднини в други езици за програмиране.

2. Вторият вариант се използва в подкрепа на споделянето на множествено наследяване в динамична среда. Вариант е уникален за Python, и не се представят в статично компилирани езици или да поддържа само единичен наследство. Тя дава възможност на лечение с ромбовиден йерархия (вж. Проблемни ромба В), в която няколко базови класове дефинират метод изпълнение със същото име. Правила за добър дизайн диктуват, че във всички случаи методът има същия подпис (поради факта, че редът на разговори се определя по време на изпълнение, тъй като тя е дадена промяна в йерархията, така че партньорите са налични във веригата, неизвестни на дата на изпълнение).

Функцията се изпълнява като част от процеса на свързване в случаите на изрично разрешение за това приписват през точката, като супер () .__ getitem __ (име). Това се постига чрез изпълнението на собствената си __getattribute __ (). използвани за намиране на класове по предвидим начин, като се вземат предвид споделянето на множествено наследяване. Затова супер () не поддържа непряк резолюция с помощта на инструкции или оператори, например супер () [име].


Имайте предвид, че използването на функция с два аргумента не може да бъде само в пътя.

При липсата на аргументи, функцията работи само в рамките на дефиницията на класа: клас, необходими за идентифициране и достъп до методите на своята част от обекта изпълва компилатор.

Забележка за Python 2
Тази функция работи само с класа на нов стил (очевидно наследява от обекта).

Търсене Синоними: супер

Свързани статии

Подкрепете проекта - споделете линка, благодаря!