课程
/后端开发
/Python
/Python3 进阶教程(新版)
参考答案说,这样实例变量在外部无法修改__count,但本来count不就无法修改嘛,那__就没什么用了啊?不太懂..
2020-10-04
源自:Python3 进阶教程(新版) 2-6
正在回答
两种都没法修改,但是加了__之后外部就没法直接Animal.count获取了,得def get_count(self)
私有属性虽然没法被直接修改,可以在类里面定义类方法,如get_count(),或者set_count()用来获取和修改。保证数据的唯一性。
把代码写成下方的就能看出区别来了
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))
你打的是一个_吧,两个_的时候是不能被外部调用的
幕布斯乐
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计
1 回答子类可以继承父类的私有属性和私有方法吗
2 回答既然“通过实例是无法修改 类属性的”, 那么为什么还需要注意“不要通过实例修改类属性,以免引发错误”?
2 回答父类调用子类的属性?????
5 回答`self.属性`是起什么意思/作用啊?为什么要写这一步?self和name、age同为属性
4 回答s.name就可以给出对象s的name属性了,为啥还要用getattr(s,name)这么麻烦的方法?