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

和参考代码一样,为什么不对

class Person(object):

    __count = 0

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

p1 = Person('Bob')
p2 = Person('Alice')
print Person.__count

可以怎么改?哪里需要修改?

正在回答

4 回答

一般报错有两种。第一种是语法报错,这是机器编译不通过,所以机器报错,比如:私有属性规定不能外部访问,你进行了访问,而且没把它放在异常检测里(出现错误可跳转except),这就是语法报错。第二种叫语义报错,这个是机器编译可通过,但是人看不到,这一般是人与人之间的代码交流,所以语义报错也很重要。比如:在class里声明的__init__的第一个参数一般是self,这是约定熟成的,但是你也可以改成 this,但是如果不进行说明,别人阅读你的代码就很困难,不易维护。

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

程序哪有那么智能,这道题目程序本身就是报错的,运行就会报错,要想通过,就看系统提示它需要显示啥,提示都很明显,能通过的代码如下

class Person(object):

    __count = 0

    def __init__(self, name):

        self.name=name

        Person.__count+=1

        print(Person.__count)


p1 = Person('Bob')

p2 = Person('Alice')


try:

    print Person.__count

except AttributeError:

    print 'AttributeError'

当然,你只写个print '1 2 AttributeError'也能通过,我们是程序员,明白运作逻辑是我们天性

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

class Person(object):


    __count = 0


    def __init__(self, name):

        self.name=name

        Person.__count=Person.__count+1

        print Person.__count


p1 = Person('Bob')

p2 = Person('Alice')


try:

    print Person.__count

except:

    print AttributeError


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

只要看到输出栏是这种错误,知道__XXX形式的变量外部是访问不到的就行了

AttributeError: type object 'Person' has no attribute '__count'

没必要继续纠结

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

举报

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

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

进入课程

和参考代码一样,为什么不对

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