From 4ce01c046e7cb8dc236255e6adad0c2180dd9112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jure=20=C5=A0orn?= Date: Fri, 6 Dec 2019 12:45:20 +0100 Subject: [PATCH] Metaprograming --- README.md | 5 +++-- index.html | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4ce124a..01a1006 100644 --- a/README.md +++ b/README.md @@ -2151,8 +2151,9 @@ class MyMetaClass(type): return type.__new__(cls, name, parents, attrs) ``` * **New() is a class method that gets called before init(). If it returns an instance of its class, then that instance gets passed to init() as a 'self' argument.** -* **It receives the same arguments as init(), except for the first one that specifies the desired class of the returned instance (MyMetaClass in our case).** -* **New() can also be called directly, usually from a new() method of a child class (**`def __new__(cls): return super().__new__(cls)`**), in which case init() is not called.** +* **It receives the same arguments as init(), except for the first one that specifies the desired type of the returned instance (MyMetaClass in our case).** +* **Like in our case, new() can also be called directly, usually from a new() method of a child class (**`def __new__(cls): return super().__new__(cls)`**).** +* **The only difference between the examples above is that my\_meta\_class() returns a class of type type, while MyMetaClass() returns a class of type MyMetaClass.** ### Metaclass Attribute **Right before a class is created it checks if it has a 'metaclass' attribute defined. If not, it recursively checks if any of his parents has it defined and eventually comes to type().** diff --git a/index.html b/index.html index 6c9ced4..6e21009 100644 --- a/index.html +++ b/index.html @@ -1874,8 +1874,9 @@ param_names = list(<sig>.parameters.keys())

Metaclass Attribute

Right before a class is created it checks if it has a 'metaclass' attribute defined. If not, it recursively checks if any of his parents has it defined and eventually comes to type().

class MyClass(metaclass=MyMetaClass):
     b = 12345