Описание тега method-resolution-order
В объектно-ориентированных языках программирования, поддерживающих множественное наследование, порядок разрешения методов (MRO) - это порядок, в котором родительские классы ищутся во время разрешения динамических методов.
1
ответ
Разрешение метода в множественном наследовании в Python
Я пытаюсь понять Порядок разрешения методов в множественном наследовании. Вот код, который я использую. Когда я пытаюсь создать объект класса ClassC, вызывается только конструктор ClassA. Как разрешаются методы в этом случае? class ClassA: def __ini…
05 окт '16 в 13:06
1
ответ
Как объединить объекты, хранящиеся в цепочке наследования в Python?
Я реализую пользовательский интерфейс. Многие объекты предоставляют различные свойства пользовательскому интерфейсу. Каждый из них имеет объект "ExposedProperties", который содержит, помимо прочего, список доступных свойств (и их типы, как они должн…
23 мар '14 в 20:52
1
ответ
Почему вызов super() в родительском классе __init__() меняет поведение подкласса __init__()?
Я пытался понять поведение super() в контексте множественного наследования. Я не понимаю, почему звонки super() в родительских классах в test2.py вызывают __init__() быть призванным для обоих родителей? test1.py #!/usr/bin/env python class A(object)…
24 июн '13 в 06:31
3
ответа
Java наследование и порядок разрешения методов
У меня есть следующий пример кода: class p { public void druckauftrag() { // ... drucke(); } public void drucke() { System.out.println("B/W-Printer"); } } class cp extends p { public void drucke() { System.out.println("Color-Printer"); } } Вызов сле…
05 фев '17 в 09:36
2
ответа
Разрешение метода C# с обобщением и выводом типа
Сегодня я был удивлен тем, как работает метод разрешения. Вот код в качестве примера: class Program { static class Mapper<TSource, TTarget> { public static void Map<TMember>(Expression<Func<TSource, TMember>> source, Expressi…
16 июн '16 в 09:47
2
ответа
Почему __mro__ не отображается в dir(MyClass)?
class MyClass(object): pass print MyClass.__mro__ print dir(MyClass) Выход: (<class '__main__.MyClass'>, <type 'object'>) ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__mo…
21 май '13 в 06:29
2
ответа
Атрибуты, используемые ранее, определенные в модуле
Вот код: #a.py ALL_FUNC = [bar, foo] #a list containing all the functions defined in this module def bar(): pass def foo(): pass Затем я запускаю его так: $ python a.py NameError: имя 'bar' не определено Ошибка означает, bar не определяется, когда A…
20 фев '12 в 13:17
1
ответ
Документ Python о MRO не так?
Я прочитал этот документ сегодня. Что-то меня смутило. http://www.python.org/download/releases/2.3/mro/ В примере, чтобы доказать MRO Python 2.2 нарушает монотонность, >>> class A(object): pass >>> class B(object): pass >>>…
26 авг '13 в 14:27
1
ответ
Изменить порядок разрешения метода
Можно ли изменить порядок разрешения метода? class A(object): def __init__(self, a): self.a=a def method(self): print('A method') class B(object): def __init__(self, b1, b2): self.b1=b1 self.b2=b2 def method(self): print('B method') class C(A, B): d…
18 апр '17 в 18:25
2
ответа
Как получить следующий родительский класс метода экземпляра из `super()` в Python
Я хотел бы знать тип экземпляра, полученного из функции super(). Я старался print(super()) а также __print(type(super()))__ class Base: def __init__(self): pass class Derive(Base): def __init__(self): print(super()) print(type(super())) super().__in…
14 авг '15 в 16:04
1
ответ
Работает ли MRO или C3 линеаризация по глубине?
Я читал эту статью, а затем нашел этот вопрос о стековом потоке, но в этом вопросе некоторые программисты, такие как Алекс Мартелли, сказали, что он использует подход глубины, так что теперь у меня есть большие сомнения. Пример: class H(): def m(sel…
08 ноя '16 в 02:50
1
ответ
Почему классы заказываются таким образом в MRO?
У меня проблема с Python MRO Для этого кода: class F: pass class G: pass class H: pass class E(G,H): pass class D(E,F): pass class C(E,G): pass class B(C,H): pass class A(D,B,E): pass print(A.__mro__) Я получаю этот вывод: (<class '__main__.A'>…
26 янв '17 в 15:40
1
ответ
Почему определение метакласса изменило классическую классу?
Согласно Порядку разрешения метода: Классические классы использовали простую схему MRO: при поиске метода базовые классы искались с использованием простой схемы слева направо в глубину. Это можно проверить в Python 2.6 In [1]: import sys In [2]: sys…
02 окт '17 в 13:53
2
ответа
dask mro Ошибка из-за перехода с Windows на Linux
Я построил код Python 2.7, используя dask пакет delayed а также compute методы. Вот небольшой пример моего кода: from dask import delayed, compute import time class simulation(): # defines simulation parameters def __init__(self,x): self.x = x jobs …
09 июл '17 в 08:54
3
ответа
Тип this в абстрактном классе и перегруженный порядок разрешения методов
Этот очень простой пример смущает меня: public class X { public void XMethod(A a) { Console.WriteLine(a.GetType()); Console.WriteLine("Got A"); } public void XMethod(B b) { Console.WriteLine(b.GetType()); Console.WriteLine("Got B"); } } public abstr…
14 май '12 в 05:51
1
ответ
Наследование Python - регистрация, когда поиск __mro__ находит совпадения, а когда нет
В Python предположим, что у меня есть базовая структура классов, которая выглядит следующим образом: class Foo(object): def do_something(self): print 'doing a thing' def do_another_thing(self): print 'doing another thing' class Bar(Foo): def do_anot…
06 май '17 в 17:31
2
ответа
Как отсортировать список классов Python по глубине наследования?
Как бы я отсортировал список классов в Python, убедившись, что любой дочерний класс находится перед любым из его родительских классов в списке? Я спрашиваю, потому что я хочу увидеть, какому типу из списка типов принадлежит объект, но найти наиболее…
14 май '14 в 16:40
1
ответ
Python: как определить атрибут MRO
Мы можем легко определить mro объекта, получив доступ к его __mro__ приписывать. В моем случае у меня действительно сложная иерархия, которую я пытаюсь распутать, чтобы избежать нынешнего ада, который мы переживаем. У меня очень длинная цепочка, как…
15 окт '15 в 17:03
2
ответа
Множественное наследование Python и MRO
В настоящее время я готовлюсь к экзамену по Python, но пока не понимаю MRO и линеаризации в Python 3. class F: pass class G: pass class H: pass class E(G,H): pass class D(E,F): pass class C(E,G): pass class B(C,H): pass class A(D,B,E): pass Например…
24 янв '17 в 10:26
1
ответ
Являются ли `.__mro__` и`.mro()`деталями реализации CPython?
Питоны type.mro()задокументировано в разделе 4.13. Специальные атрибуты, которые вводятся с: Реализация добавляет несколько специальных атрибутов только для чтения к нескольким типам объектов, где они актуальны. Некоторые из них не сообщаются встрое…
01 фев '17 в 19:56