Java Python:指定相同的泛型参数类型
我开始从Java学习Python。我想用Java编写类似于这一行的Python代码:Java Python:指定相同的泛型参数类型,java,python,generics,nodes,Java,Python,Generics,Nodes,我开始从Java学习Python。我想用Java编写类似于这一行的Python代码: public BinaryNode(T nodeData, BinaryNode<T> leftChild, BinaryNode<T> rightChild) {} 我应该如何指定传递给\uuu init\uuu的二进制节点应具有与节点数据相同的类型参数?感谢您的帮助。Python使用 您不需要指定类型。它将在运行时解析。 实际上,在Python中,您可以在对象出现时处理它们。因此,
public BinaryNode(T nodeData, BinaryNode<T> leftChild, BinaryNode<T> rightChild) {}
我应该如何指定传递给\uuu init\uuu
的二进制节点应具有与节点数据相同的类型参数?感谢您的帮助。Python使用
您不需要指定类型。它将在运行时解析。
实际上,在Python中,您可以在对象出现时处理它们。因此,如果将BinaryNodes
处理为具有相同类型的nodata
,但在某些情况下并非如此,则会发生错误,如果可能,您应该处理它 好吧,我想我找到了处理这个问题的方法:
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
我认为这是最好的方法,因为异常是在运行时处理的。为什么这对您很重要?当然,不管是哪种规格,它在逻辑上都是合理的。任何类型检查器也可以使用它。一些东西。您可以只执行一个if-else
而不是try-except
。你可以只是一个例外,而不是打印和退出raisetypeerror('Left child不是正确的类型'
@palivek我认为如果else
,我就不能做,因为leftChild.getData()
可能会创建一个AttributeError
如果leftChild
不是BinaryNode>类型。但是引发一个异常是个好主意。如果存在,你可以做(leftChild,BinaryNode):…
。
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