是否可以使用另一个类的对象创建类的对象,例如:
class Node(object):
def __init__(self, name):
self.name = name
class Edge(object):
def __init__(self, name, node1, node2):
self.name = name
self.node1 = node1 #only if it is an object of Node
self.node2 = node2 #only if it is an object of Node
因此,只有node1和node2都是Node的对象时才会创建Edge的对象。 感谢
答案 0 :(得分:2)
您可以验证对象的类型,如果它们不是您想要的,则引发异常:
def __init__(self, name, node1, node2):
if not isinstance(node1, Node):
raise ValueError("Expected node1 to be a Node")
if not isinstance(node2, Node):
raise ValueError("Expected node2 to be a Node")
self.name = name
self.node1 = node1 #only if it is an object of Node
self.node2 = node2 #only if it is an object of Node
然而,进行这种类型检查在某种程度上与Python社区中流行的“我们都是成年人”的哲学相对立。您应该信任您的用户提供一个对象,该对象的接口对于它需要执行的任务是满意的,无论它是否实际从Node继承。并且您的用户应该明白,如果他们未能维护隐含的接口合同,那么这是他们自己的错,他们不应该向您哭泣。
答案 1 :(得分:0)
使用this article检查对象是否属于给定类
class Node(object):
def __init__(self, name):
self.name = name
class Edge(object):
def __init__(self, name, node1, node2):
self.name = name
if isinstance(node1, Node):
self.node1 = node1 #only if it is an object of Node
else:
raise ValueError("Expected node1 to be a Node")
if isinstance(node2, Node):
self.node2 = node2 #only if it is an object of Node