List IronPython奇怪的方法调用

List IronPython奇怪的方法调用,list,methods,call,instance,ironpython,List,Methods,Call,Instance,Ironpython,为什么在ironPython中调用这样的方法有效 from System.Collections.Generic import List class test: mem = None def __init__(self): # !No Instance created !!! self.mem = List[int] def doSomeThing(self): if self.mem.Contains((List[

为什么在ironPython中调用这样的方法有效

from System.Collections.Generic import List

class test:

    mem = None

    def __init__(self):
        # !No Instance created !!!
        self.mem = List[int]

    def doSomeThing(self):
        if self.mem.Contains((List[int](), 123):
            pass
在这种情况下,我无法了解IronPython的行为:
self.mem.Contains((List[int](),123):
。有人对此有解释吗

编辑

self.mem
仅为该类型,并且
Contains
将始终返回
False
?如果这是真的,这似乎是一个不错的功能:)


谢谢大家!

普通Python类也是如此:

class Foo(object):
  def bar(self):
    pass

f = Foo
f.bar(Foo())
这是绑定(
Foo().bar
)和未绑定(
Foo.bar
)方法之间的区别。与其说它是一个特性,不如说它是Python实现方法的副作用


Contains
始终为false,因为它正在处理一个空列表,而该列表不包含任何内容。

是的,谢谢,这就是我所想的:Contains始终为false,因为它正在处理一个空列表,它不包含任何内容。只是为了澄清/避免误解:它正在处理调用中提供的空列表,而不是因为在过程中的某个地方自动创建了空列表。因此
self.mem.Contains(List[int]([234456123345]),123)
例如将返回
True