Metaclasses in Python3
>>> class FooBar:
pass
>>> type(FooBar)
<class 'type'>
>>> f = FooBar()
>>> type(f)
<class '__main__.FooBar'>
>>> isinstance(foo, Foobar)
True
>>> isinstance(Foobar, type)
True
These examples mean instance is an instance of a class, a class is an instance of metaclass. and type
is very useful metaclass in python as we have seen.
we can use type
to create a class like this:
>>> MyClass = type('MyClass', (), {})
>>> MyClass
<class '__main__.MyClass'>
As type is a metaclass, so we can also create a custom metaclass that extens type
>>> class Meta(type):
... pass
Difference between , _ and xx in Python
One underscore in the beginning
one underscore marks a private method or attribute
Two underscores in the beginning
Such methods with two underscores can not be overrided.
Two underscores in the beginning and in the end
Such methods are called magic methods which only python can call. Some useful methods are
__call__
__new__
__init__
__prepare__
These four methods are very important for instance and class creation.