Описание тега metaclass
В объектно-ориентированном программировании метакласс - это класс, экземпляры которого являются классами. Так же, как обычный класс определяет поведение определенных объектов, метакласс определяет поведение определенных классов и их экземпляров. Не все объектно-ориентированные языки программирования поддерживают метаклассы.
1
ответ
Как можно избежать того, чтобы динамически сгенерированные классы, производные от метакласса, не превращались в один и тот же класс?
Я пытаюсь выполнить сотни модульных тестов для функции, которую я могу извлечь из словаря. К сожалению, я не могу использовать ни один из существующих пакетов для параметризованных тестов (например, носа), поэтому я пытаюсь найти собственное решение…
25 мар '15 в 03:11
1
ответ
Магические методы на уроке самости
Я ищу способ вызывать магические методы на экземплярах классов. В моем случае я хочу вызвать хэш для класса на основе свойств. Я нашел решение с метаклассом, но я не могу получить доступ к свойствам класса из метода метакласса. class X(type): @class…
15 авг '17 в 18:20
1
ответ
Рубиновый эквивалент метакласса Groovy.method_name
У меня есть метод где symbol_price хеш с ключами в качестве символов и ценой в качестве значений. def get_price_for_symbol(symbol_price, symbol) symbol_price[symbol] end В Groovy, если мы хотим макетировать метод основного класса get_price_for_symbo…
03 окт '13 в 16:45
1
ответ
Результаты метапрограммирования XMLSlurper
Я заполучил твиттер, где каждая запись выглядит так: <entry> <id>tag:search.twitter.com,2005:30481912300568576</id> <published>2011-01-27T04:27:08Z</published> <link type="text/html" rel="alternate" href="http://twit…
28 янв '11 в 05:29
2
ответа
Могу ли я определить __repr__ для класса, а не для экземпляра?
Могу ли я определить __repr__ для класса, а не экземпляра? Например, я пытаюсь сделать это class A(object): @classmethod def __repr__(cls): return 'My class %s' % cls Что я получаю In [58]: a=A() In [59]: a Out[59]: My class <class '__main__.A'&g…
21 янв '12 в 18:58
1
ответ
Явное наследование от 'type' для реализации метакласса в python3.x
Я пытался получить некоторую интуицию о метаклассе в Python. Я пробовал и на Python2.7, и на Python3.5. В Python3.5 я обнаружил, что каждый класс, который мы определяем, имеет тип <class 'type'> наследуем ли мы явно или нет. Но если он не унас…
14 ноя '17 в 05:00
2
ответа
Получить параметры объекта в метаклассе этого объекта
Моя проблема - это смесь Python/ Django. У меня есть модель формы, которая будет отображать некоторые поля. Исходя из некоторых параметров этой модели, данные, отправляемые метаклассу, создающему этот объект, должны отличаться. Но как мне достичь эт…
12 окт '10 в 15:52
1
ответ
Groovy: этот.metaClass и экземпляр.metaClass
Я столкнулся ниже с отличным кодом сценария в книге. И это дало мне странные результаты. class Person{ def work(){ println "work()" } def sports=['basketball','football','voleyball'] def methodMissing(String name, args){ if(name in sports){ println …
24 дек '15 в 08:24
1
ответ
Как вы можете сериализовать экземпляры динамического класса в Python?
У меня есть wsdl, который занимает более двух минут, чтобы разобрать с Suds. Это слишком долго, потому что я хочу использовать объект клиента в кратковременном процессе. Я хотел бы сохранить объект клиента как статический ресурс, чтобы избежать затр…
05 июн '11 в 01:07
2
ответа
Метакласс и конструкторы
Насколько я понимаю, сложно создавать конструкторы классов в Smalltalk и Objective-C. Это потому, что конструктор не может быть сообщением экземпляра класса, потому что класс Class еще не определен. Насколько я могу судить, решение заключается в соз…
11 июн '11 в 15:24
1
ответ
Python: у каждого экземпляра должен быть свой суперкласс
В Python у меня есть экземпляры такого класса, как MyClass('name1'), MyClass('name2') и так далее. Я хочу сделать так, чтобы у каждого экземпляра был свой суперкласс, т.е. MyClass('name1') быть примером Name1MyClass а также MyClass('name2') быть при…
15 окт '13 в 22:34
1
ответ
Модель Django, которая подклассов abc, дает конфликт метакласса
У меня есть следующая модель и абстрактный базовый класс import abc from django.db import models class AbstractBase(): __metaclass__ = abc.ABCMeta @abc.abstractmethod def my_method(self): return class MyModel(models.Model, AbstractBase): @abc.abstra…
04 янв '12 в 07:52
1
ответ
Метаклассы и методы
Добавление метода в метакласс отлично работает в следующем примере. class Test(object): def __init__(self, x): self.x = x def double(self): return self.x*2 # method to add def quadruple(self): return self.x*4 # creating metaclass TypeTest = type('Ty…
22 июн '17 в 21:56
2
ответа
Очистка MetaClass Singleton
Я создал Singleton, используя MetaClass, как описано в методе 3 этого ответа class Singleton(type): _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._instances: cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwarg…
27 апр '18 в 15:05
1
ответ
Почему я не могу вызвать метод методов объекта ClassHOW в Perl 6?
Я могу позвонить ^methods на объекте и перечислите имена методов, которые я могу вызвать: my $object = 'Camelia'; my @object_methods = $object.^methods; @object_methods.map( { .gist } ).sort.join("\n").say; ^methods возвращает список, в котором я хр…
05 мар '16 в 19:48
2
ответа
Метакласс и __prepare__ ()
Я учу себя о __prepare__ функция. И я вижу этот фрагмент в PEP3115 # The custom dictionary class member_table(dict): def __init__(self): self.member_names = [] def __setitem__(self, key, value): # if the key is not already defined, add to the # list…
19 окт '17 в 10:21
1
ответ
Класс, который возвращает False с помощью bool(TheClassItself)
Я хочу создать класс MyClass где bool(MyClass) возвращается False, Является ли это возможным? Я хочу такое поведение с самим классом, а не с объектами этого класса. Для объектов этого класса я знаю, что я могу просто return False в __bool__(self),
27 май '18 в 18:25
2
ответа
Избегайте наследования сгенерированных атрибутов класса с использованием метакласса
Я думал об автоматическом добавлении дочерних классов к родительским для "цепочки" с использованием метакласса. Однако наследование этих атрибутов от родительских классов портит дело. Есть хороший способ избежать этого? class MetaError(type): def __…
09 май '17 в 07:22
1
ответ
Как динамически определить, что какой-то метод класса уже существует в его базовом классе? (Python 2.7)
Мне нужно определить какой-либо метод ChildClass переопределяет уже существующий метод в BaseClass. (Python 2.7) class BaseClass(object): def method(self): pass class ChildClass1(BaseClass): def method(self): pass class ChildClass2(BaseClass): pass …
02 дек '14 в 16:26
1
ответ
Исправить изменяемые аргументы по умолчанию через метакласс
Проблема со значениями по умолчанию для изменяемых аргументов хорошо известна в Python. В основном изменяемые значения по умолчанию назначаются один раз в определенное время и затем могут быть изменены в теле функции, что может стать неожиданностью…
03 май '16 в 22:46