栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

在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
”,所以这段代码完全满足您的规格 没有 给予;-)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/652461.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号