这可能吗?
答
Python是强烈,动态键入语言。这意味着:
- 对象是强类型,这意味着一个整数是一个整数,除非你这么说不能被当作别的。对象具有特定类型并保持这种状态。
- 您可以使用名称(变量)来引用对象,但该名称没有任何特定的类型。这一切都取决于名称是指什么,这可以改变,因为其他的东西被分配到相同的名称。
Python强烈使用所谓的"duck typing"技术,其中对象没有(也不需要)特定类型的接口。如果一个对象支持一组特定的方法(规范示例是一个类文件对象),那么它可以用于期望文件类对象的上下文中。
+0
我不得不看到原来的问题,以了解它是如何相关的,对不起,OP改变它如此显着... – RedGlyph 2009-11-06 10:23:33
答
根据你的问题,它看起来你想要一个可能像Foo一样的IFoo实例。下面的代码可以做到这一点,但不建议在Python中这样做。
class IFoo(object): pass
class Foo(IFoo): pass
f = IFoo()
Foo.__init__(f)
更好的方法是简单地使用(多)继承:
class IFoo(object):
def __init__(self, *args, **kwargs):
pass
class Foo(IFoo):
def __init__(self, *args, **kwargs):
IFoo.__init__(self, *args, **kwargs)
f = Foo()
+0
这段代码是针对你以前版本的问题:__IFoo f = new Foo(); __ – mtasic85 2009-11-06 09:07:34
你的问题还不清楚。你问是否有可能创建一个对象的新实例? – Crashworks 2009-11-06 08:30:16
Alex Martelli的答案在http://*.com/questions/1547145/defining-private-module-functions-in-python对这个问题是一个很好的答案。 – 2009-11-06 09:10:58
看到下面的答案,下次你应该从一开始就明确地提出问题,而不是完全改变它,这是最困惑和浪费时间为其他人正在尝试帮助。 – RedGlyph 2009-11-06 10:27:28