Рубрики
Без рубрики

Python Metaclass – полная ссылка

Python Metaclass, Metaclass Python, Python __metaclass__, Python Type Metaclass, примером Python Metaclass, наследование Python Metaclass, Python 3 Metaclass

Автор оригинала: Pankaj Kumar.

Термин MetaProgramming относится к потенциалу для программы, чтобы иметь знание или манипулировать собой. Python поддерживает форму метапрограммирования для классов под названием Metaclasses

Метаклассы – эзотерическая концепция ООП. Вы используете их, знаете ли вы об этом или нет. Большинство программистов Python редко, если когда-либо, должны думать о метаклассах.

Давайте посмотрим на метаклассы подробно. К концу статьи вы получите полное понимание:

  • Что такое метакласс в Python?
  • Каковы некоторые из встроенных металассов, определенных в Python?
  • Как работают метаклассы?
  • Как создавать метаклассы в Python?

Чтобы понять метаклассы, вам нужно хорошо понимать наследование и многократное наследование в Python.

Поэтому, если вы не знаете, что они, я бы порекомендовал посмотреть на учебные пособия, связанные выше. Когда вы будете готовы, мы можем продолжить дальше в этом руководстве.

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

Python Metaclass – это класс, который создает внимание другого класса. В Python класс является объектом другого класса. Этот другой класс называется метаклассом.

Метакласы в Python определяют поведение объектов класса. Давайте посмотрим на некоторые примеры, чтобы ясно понять концепцию метакласс.

Понимание встроенного метакласса в Python

Тип это встроенный метакласс в Python. Начнем с следующего примера:

class SampleClass():
   pass
obj = SampleClass()
print(type(obj))

В приведенном выше коде мы создали класс по имени Sampleclass и создать объект этого. Тогда тип объекта говорит:

class '__main__.SampleClass'

Это означает obj это объект Sampleclass Отказ Теперь, если мы попытаемся увидеть тип Sampleclass Сама следующая:

print(type(SampleClass))

Затем вывод:

class 'type'

Это означает Sampleclass это объект класса Тип Отказ Быть более конкретным Sampleclass является примером класса Тип Отказ Итак, Тип это метакласс. Каждый класс Python принадлежит встроенному метакласму Тип Отказ

Как работают метаклассы?

Всякий раз, когда мы создаем любой класс, то Metaclass по умолчанию вызывается. Этот метакласс называется тремя информацией – имя класса, набор базовых классов класса и атрибуты класса.

Как Тип Это встроенный метакласс, когда мы создаем тип класса, вызывается с этими тремя аргументами.

Мы говорим, что каждый класс в Python также является объектом Тип Это означает, что мы можем создать любой класс в одной строке, как мы создаем объект любого класса. Этот способ создания класса называется «создание класса на лету».

Создать класс Python с использованием метакласса

Так что используя метакласс Тип , вы можете создать свой класс в одной строке, позвонив следующим образом:

Student = type('Student', (), {})

Это создаст класс с именем ученика во время выполнения кода. Вышеуказанная линия эквивалентна следующему коду:

class Student:
   pass

Если наследует какой-то другой класс, скажем, например, например, мы пишем, как следствие,

class Student(Department):
   pass

Унаследованные классы должны быть предоставлены во втором аргументе при создании класса на лету,

Student = type('Student', (Department,), {})

Если студент-класс содержит некоторые атрибуты и функции, то их следует предоставить в 3-м аргументе в качестве пары ключа. См. Следуя примерам:

class Student:
  
   def __init__(self, name, roll):
       self.name = name
       self.roll = roll
       self.marks = 0.0

Эти атрибуты и функции могут быть добавлены следующим образом:

def init(self, name, roll):
   self.name = name
   self.roll = roll
   self.marks = 0.0


Student = type('Student', (), {'__init__' : init})

Обратите внимание, что мы определили функцию, прежде чем использовать ее. Еще одна вещь, которую я хочу, чтобы вы поняли, что первый аргумент – это имя класса. Так что, если вы пишете следующим образом:

Student = type('StudentClass', (), {'__init__' : init})
obj = Student("Zinia", "59")
print(obj.__class__)

Тогда выход будет,

class '__main__.StudentClass'

Итак, лучше сохранить то же имя для класса и переменной, чтобы сохранить последовательность.

Установите метакласс

Вы можете установить Metaclass вашего класса явно. Всякий раз, когда Python получает класс ключевых слов, то он ищет метакласс. Если не найден, то тип Metaclass по умолчанию используется для создания объекта класса. Вы можете установить метакласс вашего класса, используя __metaclass__ атрибут как следующее:

class SomeClass:
   __metaclass__ = type
   # other methods...

print(SomeClass.__metaclass__)

Он будет производить вывод как;

class 'type'

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

Наконец, вы также можете создать свой собственный метакласс, чтобы определить поведение любого класса, созданного с использованием вашего класса.

Для этого ваш класс должен наследовать метакласс по умолчанию Тип Как это главный метакласс. См. В следующем примере:

Он выводится:

Заключение

Метакласс в Python – очень сложная тема. Здесь мы дали основную идею метакласса. Надеюсь, теперь вы понимаете основную концепцию метакласса. Чтобы понять функциональные возможности метакласса, вы должны идти очень глубоко. Тем не менее, вы должны знать о том, как работают классы Python и какова роль метакласса в Python.