关于Python:这可能吗?

Is this possible?

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


Python是一种强、动态类型的语言。这意味着:

  • 对象是强类型的,这意味着整数是一个整数,除非您这样说,否则不能将其视为其他任何对象。对象有一个特定的类型并保持该类型。
  • 可以使用名称(变量)引用对象,但名称没有任何特定类型。这完全取决于名称所指的是什么,当其他事物被分配到相同的名称时,这可能会发生变化。

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


根据你的问题,看起来你想要一个像foo的ifoo实例。下面的代码可以做到这一点,但不建议在Python中这样做。

1
2
3
4
5
class IFoo(object): pass
class Foo(IFoo): pass

f = IFoo()
Foo.__init__(f)

更好的方法是简单地使用(多)继承:

1
2
3
4
5
6
7
8
9
class IFoo(object):
    def __init__(self, *args, **kwargs):
        pass

class Foo(IFoo):
    def __init__(self, *args, **kwargs):
        IFoo.__init__(self, *args, **kwargs)

f = Foo()