问答详情
源自:2-6 Python类属性和实例属性的优先级

这个__改私有属性看起来也没用呀,就count本来就是类属性不可被实例属性更改的?

参考答案说,这样实例变量在外部无法修改__count,但本来count不就无法修改嘛,那__就没什么用了啊?不太懂..

提问者:葡萄葡萄 2020-10-04 15:33

个回答

  • 慕粉1852291106
    2022-05-24 18:21:13

    两种都没法修改,但是加了__之后外部就没法直接Animal.count获取了,得def get_count(self)


  • 慕粉1852291106
    2022-05-24 18:20:34

    私有属性虽然没法被直接修改,可以在类里面定义类方法,如get_count(),或者set_count()用来获取和修改。保证数据的唯一性。

  • weixin_慕桂英3100311
    2022-05-12 11:08:24

    把代码写成下方的就能看出区别来了


    class Animal(object):

        __count = 0

        def __init__(self,name):

            Animal.__count = Animal.__count + 1

            self.name = name

            print('内部:{}'.format(Animal.__count))

    p1 = Animal('Cat')

    p2 = Animal('Dog')

    print('外部:{}'.format(Animal.__count))


  • 幕布斯乐
    2022-03-22 18:44:05

    你打的是一个_吧,两个_的时候是不能被外部调用的

  • UmbrellaZG
    2020-10-17 13:36:43

    两种都没法修改,但是加了__之后外部就没法直接Animal.count获取了,得def get_count(self)