我开始从Java学习Python。我想用Java编写类似于以下代码的Python代码:
public BinaryNode(T nodeData, BinaryNode<T> leftChild, BinaryNode<T> rightChild) {}
这是我到目前为止尝试过的:
from typing import TypeVar
T = TypeVar('T')
class BinaryNode:
def __init__(self, nodeData : T, leftChild : BinaryNode = None,
rightChild : BinaryNode = None):
self.nodeData = nodeData
self.leftChild = leftChild
self.rightChild = rightChild
我应该如何指定传递给__init__
的BinaryNodes与nodeData
具有相同的类型参数?感谢您的帮助。
答案 0 :(得分:1)
Python使用Duck-Typing。
您不需要指定类型。它将在运行时解决。
实际上,在Python中,您可以处理对象。因此,如果您将BinaryNodes
处理为与nodata
相同的类型,并且在某些情况下不是这样,则将发生错误,如果可能,应进行处理。
答案 1 :(得分:0)
好的,我想我想出了解决方法:
class BinaryNode:
def __init__(self, nodeData = None, leftChild = None,
rightChild = None):
if leftChild is not None:
try:
assert leftChild.getData().type() is nodeData.type()
except:
print("Error: left child is not of proper type")
exit()
if rightChild is not None:
try:
assert rightChild.getData().type() is nodeData.type()
except:
print("Error: right child is not of proper type")
exit()
self.nodeData = nodeData
self.leftChild = leftChild
self.rightChild = rightChild
def getData(self):
return self.nodeData
我认为这是最好的方法,因为异常是在运行时处理的。