Вопросы с тегом 'metaclass'

В объектно-ориентированном программировании метакласс - это класс, экземплярами которого являются классы. Так же, как обычный класс определяет поведение определенных объектов, метакласс определяет поведение определенных классов и их экземпляров. Не все объектно-ориентированные языки программирования поддерживают метаклассы.
20

Что такое метаклассы в Python?

Что такое метаклассы и для чего мы их используем?
19 сент. '08 в 6:10
7

класс << self idiom в Ruby

Что делает class << self в Ruby?
24 мар. '10 в 3:02
23

Создание синглета в Python

Этот вопрос не предназначен для обсуждения того, является ли шаблон проектирования синглтона желательным, является ли он антипаттерном или для каких-либо религиозных войн, а для обсуждения того, как этот шаблон лучше всего реализовать в Python в тако...
20 июл. '11 в 10:47
5

Как создать пользовательское строковое представление для объекта класса?

Рассмотрим этот класс: class foo(object): pass Строковое представление по умолчанию выглядит примерно так: >>> str(foo) "<class '__main__.foo'>" Как я могу сделать это отображение пользовательской строкой?
08 февр. '11 в 11:27
4

Как работает класс Django Meta?

Я использую Django, который позволяет людям добавлять дополнительные параметры в класс с помощью class Meta. class FooModel(models.Model): ... class Meta: ... Единственное, что я нашел в документации Python: class FooMetaClass(ty...
27 апр. '12 в 2:59
19

Какие (конкретные) варианты использования для метаклассов?

У меня есть друг, который любит использовать метаклассы и регулярно предлагает их в качестве решения. Я считаю, что вам почти никогда не нужно использовать метаклассы. Зачем? потому что я думаю, что если вы делаете что-то подобное с классом, вам, в...
24 дек. '08 в 20:13
2

Несоответствие множественного наследования метакласса

Почему это: class MyType(type): def __init__(cls, name, bases, attrs): print 'created', cls class MyMixin: __metaclass__ = MyType class MyList(list, MyMixin): pass в порядке и работает как ожидалось: created <class '__main__.My...
09 июн. '10 в 4:15
2

Python Metaclass: Понимание 'with_metaclass()'

Я хочу спросить, что означает вызов with_metaclass() в определении класса. например:. class Foo(with_metaclass(Cls1, Cls2)): Это особый случай, когда класс наследуется от метакласса? Является ли новый класс также метаклассом?
29 авг. '13 в 14:32
4

Используя abc.ABCMeta таким образом, он совместим как с Python 2.7, так и с Python 3.5

Я хотел бы создать класс, который имеет abc.ABCMeta как метакласс и совместим как с Python 2.7, так и с Python 3.5. До сих пор мне удалось это сделать либо на 2.7, либо на 3.5 - но никогда в обеих версиях одновременно. Может ли кто-нибудь дать мне р...
27 февр. '16 в 18:10
7

Как читать атрибуты класса в том же порядке, что и объявлено?

Я пишу метакласс, который читает атрибуты класса и сохраняет их в списке, но я хочу, чтобы список (cls.columns) соблюдал порядок объявления (то есть: mycol2, mycol3, zut, cool, menfin, a в моем примере): import inspect import pprint class Column(o...
16 дек. '10 в 10:08
2

Тройное наследование вызывает конфликт метакласса... Иногда

Похоже, я наткнулся на метаклассовый ад, даже когда я не хотел иметь с ним ничего общего. Я пишу приложение в Qt4 с помощью PySide. Я хочу отделить управляемую событиями часть от определения пользовательского интерфейса, которая создается из файлов ...
02 июл. '11 в 13:48
4

Ошибка при вызове баз метакласса: аргумент функции() должен быть кодом, а не str

Я попытался подклассифицировать threading.Condition ранее сегодня, но это не сработало. Вот вывод интерпретатора Python, когда я пытаюсь подклассифицировать threading.Condition class: >>> import threading >>> class ThisWontWork(thr...
09 февр. '10 в 18:24
4

Есть ли причина выбирать __new__ над __init__ при определении метакласса?

Я всегда настраивал метаклассы примерно так: class SomeMetaClass(type): def __new__(cls, name, bases, dict): #do stuff here Но я просто столкнулся с метаклассом, который был определен следующим образом: class SomeMetaClass(type): ...
03 дек. '09 в 15:00
1

Метаклассы Python против декораторов класса

В чем основные отличия между метаклассами Python и декораторами класса? Есть ли что-то, что я могу сделать с одним, но не с другим?
22 нояб. '09 в 17:39
5

Использование метода __call__ для метакласса вместо __new__?

При обсуждении метаклассов the docs: Вы можете, конечно, переопределить другие методы класса (или добавить новые методы); например, определение пользовательского метода __call__() в metaclass позволяет настраивать поведение при вызове класса, напр...
06 авг. '11 в 12:28