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

class Person(object):

    __count = 0

    @classmethod

    def how_many(cls):

        return cls.__count

    def __init__(self, name):

        self.name = name

        Person.__count = Person.__count + 1


print Person.how_many()

p1 = Person('Bob')

print Person.how_many()


xinxin_121
浏览 1243回答 1
1回答

清波

关于  @classmethod 和 @staticmethod 都是 Python的装饰器,具体区别,可以搜索得知, 直接回答题主的问题:第一个print 就是直接调用 Person 的 类方法(classmethod), 打印的其实是 Person 的属性 __count, 这个时候 __count = 0, 所以打印出来的是0.第二个print 是在 Person 实例化一次之后,对象的实例化,会首先调用 其__init__ 方法, 这时__count 加1 也就变成了1, 所以 打印出来的是1.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python