Each Answer to this Q is separated by one/two green lines.
I know we can overload behavior of instances of a class, e.g. –
class Sample(object): pass s = Sample() print s <__main__.Sample object at 0x026277D0> print Sample <class '__main__.Sample'>
We can change the result of
class Sample(object): def __str__(self): return "Instance of Sample" s = Sample() print s Instance of Sample
Can we change the result of
You can use a metaclass:
class SampleMeta(type): def __str__(cls): return ' I am a Sample class.'
class Sample(metaclass=SampleMeta): pass
class Sample(object): __metaclass__ = SampleMeta
I am a Sample class.
A metaclass is the class of class. Its relationship to a class is analogous to that of a class to an instance. The same
classstatement is used. Inheriting form
type instead from
object makes it a metaclass. By convention
self is replaced by