@ -995,29 +995,31 @@ Z = make_dataclass('Z', ['a']); print/str/repr(Z(<obj>))
>>> <obj>
```
### Inheritance
### Subclass
* **Inheritance is a mechanism that enables a class to extend another class (subclass to extend its parent), and by doing so inherit all its methods and attributes.**
* **Subclass can then add its own methods and attributes or override inherited ones by reusing their names.**
<li><strong>Inheritance is a mechanism that enables a class to extend another class (subclass to extend its parent), and by doing so inherit all its methods and attributes.</strong></li>
<li><strong>Subclass can then add its own methods and attributes or override inherited ones by reusing their names.</strong></li>
<li><strong>They add type hints to variables, arguments and functions (<codeclass="python hljs"><spanclass="hljs-string">'def f() -><type>:'</span></code>).</strong></li>
<li><strong>Hints are used by type checkers like <ahref="https://pypi.org/project/mypy/">mypy</a>, data validation libraries such as <ahref="https://pypi.org/project/pydantic/">Pydantic</a> and lately also by <ahref="https://pypi.org/project/Cython/">Cython</a> compiler. However, they are not enforced by CPython interpreter.</strong></li>
<pre><codeclass="python language-python hljs"><Path> = <Path>.parent <spanclass="hljs-comment"># Returns Path without the final component.</span>
<str> = <Path>.name <spanclass="hljs-comment"># Returns final component as a string.</span>
<str> = <Path>.suffix <spanclass="hljs-comment"># Returns name's last extension, e.g. '.py'.</span>
<str> = <Path>.stem <spanclass="hljs-comment"># Returns name without last extension.</span>
<tup.> = <Path>.parts <spanclass="hljs-comment"># Returns all path's components as strings.</span>
<str> = <Path>.stem <spanclass="hljs-comment"># Returns name without the last extension.</span>
<tup.> = <Path>.parts <spanclass="hljs-comment"># Returns all components as strings.</span>
<li><strong>File must be opened with a <codeclass="python hljs"><spanclass="hljs-string">'newline=""'</span></code> argument, or newlines embedded inside quoted fields will not be interpreted correctly!</strong></li>
<li><strong>File must be opened with a <codeclass="python hljs"><spanclass="hljs-string">'newline=""'</span></code> argument, or all '\r\n' sequences inside quoted fields will get converted to '\n'!</strong></li>
<li><strong>To print the spreadsheet to the console use <ahref="#table">Tabulate</a> library.</strong></li>
<li><strong>For XML and binary Excel files (xlsx, xlsm and xlsb) use <ahref="#dataframeplotencodedecode">Pandas</a> library.</strong></li>
<li><strong>Reader accepts any iterator of strings, not just files.</strong></li>
<li><strong>Reader accepts any collection of strings, not just files.</strong></li>