因此,情况是我有一个名为Foo
的c泛型类,它的模板参数T
具有new()
约束。我宣布我的课程如下:
class Baz
{
public Baz() { }
}
class Foo<T>
where T : Baz, new()
{
// blah blah
}
在python中:
class Bar(Baz):
def __init__(self):
""" do various things here """
但是,如果在python中,我尝试执行
Foo[Bar]
,就会得到一个错误,告诉我我的Bar
类违反了new()
上的约束(即Foo<T>
约束)。给什么?
最佳答案
ironpython对象没有默认构造函数。它们需要携带一些附加的可变状态,即python类型,在类被实例化时必须提供该类型。动态调用时,该类型用于解析任何虚拟重载和其他方法。