内部类:如何在构造时获取外部类对象?

内部类:如何在构造时获取外部类对象?,第1张

部类:如何在构造时获取外部类对象

在Python 2.6中,也是自定义描述符的类装饰器匹配您提供的规范:

class InnerClassDescriptor(object):  def __init__(self, cls):    self.cls = cls  def __get__(self, instance, outerclass):    class Wrapper(self.cls):      outer = instance    Wrapper.__name__ = self.cls.__name__    return Wrapperclass Outer(object):  @InnerClassDescriptor  class Inner(object):    def __init__(self):      print self.outero = Outer()i = o.Inner()print 'Outer is a', type(Outer)print 'Inner is a', type(o.Inner)

这发出:

<__main__.Outer object at 0x82f90>Outer is a <type 'type'>Inner is a <type 'type'>

只是为了确认

o.Inner [[is]]是一个类对象,而不是像闭包那样奇怪的东西

根据您的特殊规格。当然,每次重入都需要使用 不同的 类-即使在单线程环境中,以下内容也是如此:

o1 = Outer()o2 = Outer()i1 = o1.Inneri2 = o2.Innerprint i1(), i2(), i1(), i2()

应该可以正常工作,并且将o1 vs
o2存放在

o1.Inner
比vs返回的类之外的其他任何地方
o2.Inner
(例如,在TLS中)将意味着这种用法的可怕结果。

但你 并没有 注明“

o.Inner
必须是 完全相同 的同一类对象 的每个
可能
o
这就是实例
Outer
”,所以这段代码完全满足您的规格 没有 给予;-)。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5654591.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存