Публикации по теме 'metaclass'


Метапрограммирование — Python
Метакласс — это класс, экземплярами которого являются классы. Подобно тому, как обычный класс определяет поведение определенных объектов, метакласс позволяет настраивать инстанцирование класса. Он применяется, когда определения классов считываются для создания классов, задолго до создания экземпляров классов. Типичные варианты использования метакласса: 0. регистрация регистрация классов во время создания проверка интерфейса автоматическое добавление новых методов..

Метаклассы в Python
Введение в метаклассы В большинстве языков программирования классы - это просто фрагменты кода, определяющие правила для объекта, но в Python, поскольку вы должны слышать, что все является объектом: оказывается, что это верно в отношении самих классов. классы на самом деле являются первоклассными объектами, они могут быть созданы во время выполнения, переданы как параметры, возвращены из функций и назначены переменным. давайте посмотрим на пример ниже - class Tutorial: pass..

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

Что делает встроенный в Python __build_class__?
В Python 3.1 есть новая встроенная функция, которую я не знаю в модуле builtins : __build_class__(...) __build_class__(func, name, *bases, metaclass=None, **kwds) -> class Internal helper function used by the class statement. Что...
4517 просмотров
schedule 14.10.2022

Как среда выполнения Objective-C создает корневой метакласс и другие описания классов?
Я пытаюсь реализовать базовую объектно-ориентированную среду выполнения ANSI C и использую Objective-C в качестве руководства. Кажется, они состоят из трех частей. Описание класса, интерфейс класса и реализация класса. Чтобы создать экземпляр...
708 просмотров

Как я могу динамически переопределить каждый метод класса в Groovy?
Groovy добавляет each () и ряд других методов в java.lang. Объект. Я не могу понять, как использовать метакласс Groovy для динамической замены значения по умолчанию each () в классе Java. Я вижу, как добавлять новые методы:...
1457 просмотров
schedule 05.02.2023

Создание синглтона в Python
Этот вопрос не для обсуждения того, желателен ли одноэлементный шаблон проектирования , является анти-шаблоном или для любых религиозных войн, но чтобы обсудить, как этот шаблон лучше всего реализовать в Python таким образом, чтобы он был наиболее...
438056 просмотров

Автоматическая регистрация класса, когда он определен (но без его импорта в любом месте)
Я хотел бы зарегистрировать класс (не экземпляр) при его создании... но без его импорта. В принципе, я хочу сделать то, что описано здесь: Как автоматически зарегистрировать класс, когда он определен ... но без необходимости импортировать...
1044 просмотров
schedule 21.09.2022

Глубокая копия списка Python при назначении
Получил это упражнение на экзамене по Python. Попытка вернуть глубокую копию списка следующим образом: l = list() l = [0,1,2] l1 = l l[0] = 1 l1 должен содержать [0,1,2] , а не [1,1,2] Упражнение указано для его реализации с помощью...
599 просмотров
schedule 12.12.2023

Установка метакласса класса с помощью декоратора
После этот ответ кажется, что метакласс класса может быть изменен после того, как класс был определен с помощью следующего*: class MyMetaClass(type): # Metaclass magic... class A(object): pass A = MyMetaClass(A.__name__, A.__bases__,...
2887 просмотров
schedule 01.06.2022

Ошибка метакласса при объединении Qgraphics и sqlalchemy
Я хочу сделать QGraphicsItem s постоянным, используя sqlalchemy. Простое объединение класса Base с классами PySide дает ошибку о метаклассах. Тема метаклассов — это магия Python, и я не хочу углубляться в нее, если в этом нет необходимости. Есть...
655 просмотров
schedule 05.08.2022

Тип Python Mock только внутри модуля
Я использую макет для тестирования в Python. Я пытаюсь выполнить модульное тестирование метакласса, который перезаписывает метод __new__ , а затем вызывает type.__new__(cls) внутри. Я не хочу на самом деле вызывать type.__new__ , поэтому я...
546 просмотров
schedule 23.01.2023

Есть ли способ заставить каждый класс в проекте реализовать интерфейс (без массового поиска и замены)
Есть ли способ сделать что-то вроде этого: В Groovy есть ли способ украсить каждый класс, чтобы добавить трассировку? но в C#. Поскольку С# не поддерживает метакласс, я не знаю, как это сделать. Если бы я мог заставить это решение работать, я бы...
73 просмотров
schedule 20.05.2023

Перехват сообщений в Squeak
Я пытаюсь лучше понять отражение в Smalltalk. Я использую последнюю версию Squeak (v4.3). Я хочу перехватывать каждое сообщение, отправленное экземплярам одного из моих классов. Я предполагал, что смогу переопределить метод...
274 просмотров

Как получить атрибуты в том порядке, в котором они объявлены в классе Python?
Как описано в PEP435 , enum можно определить следующим образом: class Color(Enum): red = 1 green = 2 blue = 3 И результирующие enum members из Color можно повторять в порядке определения: Color.red, Color.green, Color.blue...
1294 просмотров
schedule 10.09.2023

Как преобразовать переменные класса в переменные экземпляра в Python?
Я пытаюсь преобразовать переменные класса в переменные экземпляра во время выполнения, аналогично тому, что происходит в Django ORM, где переменные класса различных типов преобразуются в переменные экземпляра тех же типов во время выполнения. Я...
2132 просмотров
schedule 17.07.2023

Django: порядок метакласса игнорирует NULL
Мне нужно отсортировать набор запросов, используя метакласс модели Django. Я определил это так: class MyModel(models.Model): order = models.IntegerField(blank=True, null=True) class Meta: ordering = ['order'] Некоторые записи...
366 просмотров
schedule 17.05.2023

Groovy: прозрачное выполнение кода до и после вызова любого метода
Допустим, у нас есть отличный класс с некоторыми методами (статическими или не статическими). Что я хочу сделать, так это выполнить некоторый код до и после вызова каждого метода этого класса, не касаясь класса вообще и без динамического...
1735 просмотров
schedule 07.01.2023

Модуль Python3 PIL IMAGE и метакласс
Я хочу передать класс Image модуля PIL в один из моих классов, поэтому я, естественно, написал: import sys from PIL import Image from PyQt4 import QtCore, QtGui class BitsWindow(QtGui.QWidget, Image): Но я получаю эту ошибку: class...
184 просмотров

Пропуск всех модульных тестов, кроме одного в Python, с использованием декораторов и метаклассов
Я пишу модульные тесты для MCU, который передает команды через порт USB и проверяет их ответ. Если один модульный тест не проходит, мне имеет смысл выполнить некоторую отладку в MCU. Поэтому я хотел бы отключить все модульные тесты, кроме того,...
976 просмотров

В каких случаях вызываются несколько метаклассов из родительских классов?
Странно ведущий себя код (протестировано с Python 2.7.3): class Meta1(type): def __new__(mcl, name, bases, attrs): print "Hello Meta1.__new__ " return super(Meta1, mcl).__new__(mcl, name, bases, attrs) class Meta2(type):...
271 просмотров
schedule 15.07.2023

Подкласс Django ModelBase (метакласс для моделей Django)
Я хочу, чтобы некоторые из моих моделей Django имели свойство «владелец». Позже мне может понадобиться изменить или дополнить логику, и эта логика повторно используется во многих классах. Поэтому я хотел бы просто наследовать от класса Owned ,...
1385 просмотров

Метакласс, который украшает все методы класса, используя две разные реализации декоратора.
У меня проблема с реализацией декоратора, применяемого в этом декораторе метакласса, который я написал: def decorateAll(decorator): class MetaClassDecorator(type): def __new__(meta, classname, supers, classdict): for name,...
1256 просмотров
schedule 21.11.2022