这可能吗?

时间:2009-11-06 08:28:14

标签: python

我有一个类Foo是一个正在运行的线程,我想做的是限制Bar可以访问Foo的同时仍然可以访问Foo的内部,这可能吗?

2 个答案:

答案 0 :(得分:2)

Python是动态类型语言。这意味着:

  • 对象强烈类型,这意味着整数是一个整数,除非您这样说,否则不能将其视为其他任何内容。对象具有特定类型并保持这种状态。
  • 您可以使用名称(变量)来引用对象,但名称没有任何特定类型。这一切都取决于名称所指的内容,并且可以随着其他内容分配给同一名称而改变。

Python强烈使用所谓的"duck typing"技术,其中对象没有(并且不需要)特定类型的接口。如果一个对象支持某组方法(规范示例是一个类文件对象),那么它可以在需要类文件对象的上下文中使用。

答案 1 :(得分:0)

根据你的问题,看起来你想要一个可能像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()
相关问题