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

最后三行中两个print分别对应哪个?运行出结果是0和1

最后三行中两个print分别对应哪个?运行出结果是0和1

xinxin_121 2016-05-28 16:37:32
class Person(object):    __count = 0    @classmethod    def how_many(cls):        return cls.__count    def __init__(self, name):        self.name = name        Person.__count = Person.__count + 1print Person.how_many()p1 = Person('Bob')print Person.how_many()
查看完整描述

1 回答

已采纳
?
清波

TA贡献165条经验 获得超90个赞

关于  @classmethod 和 @staticmethod 都是 Python的装饰器,具体区别,可以搜索得知, 直接回答题主的问题:

  1. 第一个print 就是直接调用 Person 的 类方法(classmethod), 打印的其实是 Person 的属性 __count, 这个时候 __count = 0, 所以打印出来的是0.

  2. 第二个print 是在 Person 实例化一次之后,对象的实例化,会首先调用 其__init__ 方法, 这时__count 加1 也就变成了1, 所以 打印出来的是1.

查看完整回答
1 反对 回复 2016-05-30
  • 1 回答
  • 0 关注
  • 1242 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信