diff --git a/pythonetc/README.md b/pythonetc/README.md
index 5de5fd4..f0979d0 100644
--- a/pythonetc/README.md
+++ b/pythonetc/README.md
@@ -53,3 +53,4 @@ More:
1. ./enum.md
1. ./dynamic-class-attribute.md
1. ./zipapp.md
+1. ./new-init.md
diff --git a/pythonetc/new-init.md b/pythonetc/new-init.md
new file mode 100644
index 0000000..231779d
--- /dev/null
+++ b/pythonetc/new-init.md
@@ -0,0 +1,30 @@
+Creation of class instance is done by `__call__` method of `object` class (provided by metaclass `type`) and practically includes only 2 steps:
+
+1. Call the `__new__` method to create an instance.
+2. Call the `__init__` method to set up the instance.
+
+```python
+class A:
+ def __new__(cls, *args):
+ print('new', args)
+ return super().__new__(cls)
+ def __init__(self, *args):
+ print('init', args)
+
+A(1)
+# new (1,)
+# init (1,)
+
+A.__call__(1)
+# new (1,)
+# init (1,)
+```
+
+So, if you want to create an instance without executing `__init__`, just call `__new__`:
+
+```python
+A.__new__(A, 1)
+# new (1,)
+```
+
+Of course, that's a bad practice. The good solution is to avoid a heavy logic in `__init__` so nobody wants to avoid calling it.