在Python中,我正在创建一个图形类,打算通过创建一个Node类,然后创建一个Edge类,将该类作为构造函数的参数,两个节点是源节点和目标节点。我还想在Edge类中检查两个输入实际上是Nodes,所以我想添加一些行,例如
assert type(src) is Node and type(tgt) is Node
但是,这不会像我期望的那样起作用。据我了解,我需要使用类似src.__name__ is Node.__name__
的东西,但这看起来很丑。有没有一种方法可以控制用户定义类的类型名称,以使代码读起来更好呢?
我尝试遵循在这里找到的一些内容:Python: Change class type name
并编写代码
class Node:
...
__class__ = type("Node", (type,), {})
我不确定我是否错误地应用了在该链接中找到的课程,或者这些课程不能完成我想做的事情-但一种或另一种方式,它没有完成我的工作希望如此。
答案 0 :(得分:2)
签出“ 实例”内置功能: https://docs.python.org/2/library/functions.html#isinstance
示例:
>>> class Node(object):
... pass
...
>>> class Booger(object):
... pass
...
>>> n=Node()
>>> b=Booger()
>>> isinstance(n, Node)
True
>>> isinstance(b, Node)
False
>>>
>>> class SubNode(Node):
... pass
...
>>> sn=SubNode()
>>> isinstance(sn, Node)
True