文盲老顾 2021-06-15 04:22 采纳率: 66.7%
浏览 102
已采纳

python自定义类的私有类中,如何实例化私有类本身

  1. class A:
  2. def __init__(self):
  3. self.name = '测试类'
  4. self.class1 = self.__B()
  5. self.class2 = self.class1.doSomeThing()
  6. class __B:
  7. def __init__(self):
  8. self.name = '私有类'
  9. def doSomeThing(self):
  10. return __B()
  11. a = A()

在上述代码中,执行之后会有出错提示 NameError: name '_B__B' is not defined

请问,如何在私有类中实例化本身的类型,使用公有类可以实例化,不用回答这个方式了

  • 写回答

5条回答 默认 最新

  • sHlsy1995 2021-06-16 07:11
    关注
    class A:
        def __init__(self):
            self.name = "测试类"
            self.class1 = self.__B()
            self.class2 = self.class1.doSomeThing()
    
        class __B:
            def __init__(self):
                self.name = "私有类"
    
            def doSomeThing(self):
                return self.__class__()
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    sHlsy1995 2021-06-16 07:13

    关键还是你是一个私有类,所以在A里的名字不是__B而是_A__B

    回复
    文盲老顾 回复 sHlsy1995 2021-06-17 02:59

    已经测试通过,self.__class__()确实可以创建自身类型的实例

    回复
    sHlsy1995 回复 文盲老顾 2021-06-17 03:20

    但的确不是很优雅。

    回复
    展开全部6条评论
查看更多回答(4条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部