|
@ -308,15 +308,8 @@ Point(x=<span class="hljs-number">1</span>, y=<span class="hljs-number">2</span> |
|
|
<li><strong>Type and class are synonymous.</strong></li> |
|
|
<li><strong>Type and class are synonymous.</strong></li> |
|
|
</ul> |
|
|
</ul> |
|
|
<pre><code class="python language-python hljs"><type> = type(<el>) <span class="hljs-comment"># Or: <type> = <el>.__class__</span> |
|
|
<pre><code class="python language-python hljs"><type> = type(<el>) <span class="hljs-comment"># Or: <type> = <el>.__class__</span> |
|
|
<bool> = isinstance(<el>, <type>) <span class="hljs-comment"># Also true if 'type' is a superclass of el's type.</span> |
|
|
|
|
|
|
|
|
<bool> = isinstance(<el>, <type>) <span class="hljs-comment"># Also checks subclasses and ABCs.</span> |
|
|
</code></pre> |
|
|
</code></pre> |
|
|
<pre><code class="python language-python hljs"><tuple> = <type>.__bases__ <span class="hljs-comment"># A tuple of type's parents.</span> |
|
|
|
|
|
<list> = <type>.mro() <span class="hljs-comment"># Returns a list of all type's superclasses.</span> |
|
|
|
|
|
<bool> = issubclass(<sub_type>, <type>) <span class="hljs-comment"># Checks if 'sub_type' is a subclass of 'type'.</span> |
|
|
|
|
|
</code></pre> |
|
|
|
|
|
<ul> |
|
|
|
|
|
<li><strong>Every class is a subclass and a superclass of itself.</strong></li> |
|
|
|
|
|
</ul> |
|
|
|
|
|
<pre><code class="python language-python hljs"><span class="hljs-meta">>>> </span>type(<span class="hljs-string">'a'</span>), <span class="hljs-string">'a'</span>.__class__, str |
|
|
<pre><code class="python language-python hljs"><span class="hljs-meta">>>> </span>type(<span class="hljs-string">'a'</span>), <span class="hljs-string">'a'</span>.__class__, str |
|
|
(<<span class="hljs-class"><span class="hljs-title">class</span> '<span class="hljs-title">str</span>'>, <<span class="hljs-title">class</span> '<span class="hljs-title">str</span>'>, <<span class="hljs-title">class</span> '<span class="hljs-title">str</span>'>) |
|
|
(<<span class="hljs-class"><span class="hljs-title">class</span> '<span class="hljs-title">str</span>'>, <<span class="hljs-title">class</span> '<span class="hljs-title">str</span>'>, <<span class="hljs-title">class</span> '<span class="hljs-title">str</span>'>) |
|
|
</span></code></pre> |
|
|
</span></code></pre> |
|
@ -324,6 +317,7 @@ Point(x=<span class="hljs-number">1</span>, y=<span class="hljs-number">2</span> |
|
|
<pre><code class="python language-python hljs"><span class="hljs-keyword">from</span> types <span class="hljs-keyword">import</span> FunctionType, MethodType, LambdaType, GeneratorType |
|
|
<pre><code class="python language-python hljs"><span class="hljs-keyword">from</span> types <span class="hljs-keyword">import</span> FunctionType, MethodType, LambdaType, GeneratorType |
|
|
</code></pre> |
|
|
</code></pre> |
|
|
<h3 id="abcs">ABC-s</h3> |
|
|
<h3 id="abcs">ABC-s</h3> |
|
|
|
|
|
<p><strong>Abstract base classes introduce virtual subclasses, that don’t inherit from a class but are still recognized by isinstance().</strong></p> |
|
|
<pre><code class="python language-python hljs"><span class="hljs-keyword">from</span> numbers <span class="hljs-keyword">import</span> Integral, Rational, Real, Complex, Number |
|
|
<pre><code class="python language-python hljs"><span class="hljs-keyword">from</span> numbers <span class="hljs-keyword">import</span> Integral, Rational, Real, Complex, Number |
|
|
<bool> = isinstance(<el>, Number) |
|
|
<bool> = isinstance(<el>, Number) |
|
|
</code></pre> |
|
|
</code></pre> |
|
|