metaclass

Я только что попытался написать этот простой код для тестирования методов переопределения с помощью metaClass. Код здесь: class Hello { public Hello() { Foo() } public void Foo() { println "old" } } У него есть метод Foo (), который просто выводит "o...

Пытаюсь понять, как написать некоторые миксины для команды управления Django, которые будут обертывать BaseCommand.option_list без потери значения текущего класса или любых унаследованных классов / миксинов. Цель состоит в том, чтобы избежать выполнения BaseCommand.option_list + MyCommonOptionMixin.option_lis...

Я хочу автоматически создавать экземпляры некоторых классов в Python сразу после импорта их модулей,поэтому нет необходимости направлять вызов экземпляра. Мои настройки можно урезать до следующего кода: class MetaTest(type): _instances = {} def __init__(cls, name, bases, attrs): super(Meta...

Почему вы не можете переопределить имя класса декларативно, например, чтобы использовать имя класса, которое не является допустимым идентификатором? >>> class Potato: ... __name__ = 'not Potato' ... >>> Potato.__name__ # doesn't stick 'Potato' >>> Potato().__name__ # .. ...

У меня есть следующий код python: class FooMeta(type): def __setattr__(self, name, value): print name, value return super(FooMeta, self).__setattr__(name, value) class Foo(object): __metaclass__ = FooMeta FOO = 123 def a(self): pass Я ожидал бы __setattr__ вызова м...

Я видел много методов создания синглтона в Python, и я попытался использовать реализацию метакласса с Python 3.2 (Windows), но он, кажется, не возвращает тот же экземпляр моего синглтонного класса. class Singleton(type): _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._i...

У меня есть 20 + таблиц MySQL, prm_a, prm_b, ... с той же базовой структурой, но разными именами, и я хотел бы связать их с классами моделей Django, не записывая каждый из них вручную. Поэтому, чувствуя себя амбициозным, я решил попробовать свои силы в использовании type() в качестве фабрики класса: Следующ...

На этот вопрос уже есть ответ здесь: Как создать пользовательское строковое представление для объекта класса? 3 ответа Могу ли я определить __repr__ для класса, а не для экземпляра? Например, я пытаюсь сделать это c...

Что такое метаклассы и для чего мы их используем?...

У меня есть друг, который любит использовать метаклассы, и регулярно предлагает их решение. Я считаю, что вам почти никогда не нужно использовать метаклассы. Зачем? потому что я считаю, что если вы делаете что-то подобное классу, вы, вероятно, должны делать это с объектом. И небольшой редизайн/рефакторинг в ...