Python:更改类名

时间:2018-08-14 02:09:20

标签: python class

在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,), {})

我不确定我是否错误地应用了在该链接中找到的课程,或者这些课程不能完成我想做的事情-但一种或另一种方式,它没有完成我的工作希望如此。

1 个答案:

答案 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