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中,您可以在对象出现时处理它们。因此,

我开始从Java学习Python。我想用Java编写类似于这一行的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