问答详情
源自:2-9 Python定义类方法

定义调用问题:为什么set方法不起作用。1.一个@classmethod下,set在get后,不行;set在get前,可行。2.分别类定义set和get,可行。

class Animal(object):

    __count=0

    def __init__(self,name,age):

         self.name=name

         self.age=age


    @classmethod

    

    def get_count(cls):

        return cls.__count

    def set_count(cls,count):

        cls.__count=count

        

Leo=Animal('herman',22)

print('name:{}\nage:{}'.format(Leo.name,Leo.age))


print('init count:',Leo.get_count())


Leo.set_count(98)

print('changed count:',Leo.get_count())



提问者:hermaniu 2021-11-18 17:37

个回答

  • hermaniu
    2021-11-21 19:15:05

    实例本身无count,get_count定义的是类方法,因此Leo.get_count()返回Animal的私有属性__count=0,set_count是实例方法对类无效,因此获取的__count 还是原本的0.

  • 慕粉_pp
    2021-11-19 09:32:50

    @classmethod 用于标识紧接着它的那一个方法

  • 慕粉_pp
    2021-11-19 09:06:43

        @classmethod

        def get_count(cls):

            return cls.__count

           

        @classmethod    

        def set_count(cls,count):

            cls.__count=count