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

来源:2-9 Python定义类方法

hermaniu

2021-11-18 17:37

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())



写回答 关注

3回答

  • 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


    weixin... 回复herman...

    相反,count是类中的变量,所以set作为类的方法将count值更改,get也只能获取的是类中唯一的count值,也就是你set更改的

    2023-06-09 23:34:06

    共 3 条回复 >

Python3 进阶教程(新版)

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

41910 学习 · 236 问题

查看课程

相似问题