为了账号安全,请及时绑定邮箱和手机立即绑定

为什么代码会打印两次输出

p1 = Person('Bob')
p2 = Person('Alice')

print Person.__count

p1、p2实例并没被调用啊,怎么会打印出1、2呢 。我的理解只有print Perso.__count // 2 吧

但是上一章不是说__开头的属性不会被外部访问到吗?那就应该是直接报错,没有输出才对啊

正在回答

3 回答

输出是因为在__init__中输出的,而__init__这个函数会在对象构建的时候就被调用执行,所以会输出

0 回复 有任何疑惑可以回复我~

题主是说的答案里的打印问题是吗?

其实是这样的,要先了解一下问题,Person这个类中__init__这个函数是什么意思。

p1 = Person('Bob')

这句话就意味着,p1进行了初始化,也就是说,调用了Person.__init__(p1,'Bob')这个函数,因此会的打印出来1,2


第二个问题:Person.__count是私有的,不能被外部访问,这是正确的,但我们执行以下代码时,是在Person类里面执行的。

    def __init__(self, name):
        Person.__count=Person.__count+1
        self.name=name
        print Person.__count

也就是说,初始化时,类里面进行了相关调用,而我们是无法将这个带到外面的,所以

p1.__count一定是错的。


以上,不知道能不能回答题主疑问。

6 回复 有任何疑惑可以回复我~

你在进P1=Person('Bob')赋值时已经执行了print Person.__count

可以这样考虑 进行 Person('Bob')

就要执行一段这个

def __init__(self, name):

        self.name = name 

        Person.__count = Person.__count + 1

        print Person.__count

这个中就有 一个类的赋值

一个count的加法

一个print语句

赋值两次就有两个结果喽

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

为什么代码会打印两次输出

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信