擅长:python、mysql、java
<p>如果您使用的是最新版本的Python(在编写本文时是3.6.0),那么确实有</p>
<pre><code>from typing import List
class Graph:
nodeList: List[Node]
</code></pre>
<p>Python本身实际上不会对这些信息做任何事情,但是Python有一些类型检查工具,它们将执行静态分析,并告诉您是否尝试将<code>Node</code>以外的内容放入列表中</p>
<p>对于旧版本的Python3,您可以使用格式注释执行类似操作,然后typechecking工具将能够执行相同的检查:</p>
<pre><code>from typing import List
class Graph:
nodeList # type: List[Node]
</code></pre>
<p>当然,所有这些在运行程序之前只提供可选的静态类型检查。一旦代码运行,只要对象具有正确的方法和属性,Python就不会关心对象的类型:如果它像鸭子一样嘎嘎作响,Python会把它当作鸭子对待</p>
<p>如果您想了解更多关于Python中可选静态类型检查的信息,请参见<a href="http://mypy-lang.org/" rel="nofollow noreferrer">http://mypy-lang.org/</a></p>
<p>打印<code>Node</code>类型的实例会给您<code><type 'instance'></code>这一事实表明您使用的是Python 2的某个版本。如果可能,请考虑切换到较新的版本,但如果您想继续使用Python 2,至少要确保所有对象显式派生自<code>object</code>:</p>
<pre><code>class Node(object):
...
</code></pre>
<p>如果这样做,print语句将显示类。如果做不到这一点,就会得到Python早期的老式类,您会发现属性之类的东西不能正确使用它们</p>