概述
简单说下实例中的成员变量的访问限制,先来定义一个类:
class Student(object): def __init__(self, name, age, score): self.name = name self._age = age self.__score = score def print_score(self): print('%s今年%s岁,成绩是%s' % (self.name, self._age, self.__score)) def set_student(self, ,name, age, score): self.name = name self._age = age self.__score = score
1,普通变量,可以使用外部代码和内部函数修改变量。上面的初始数据定义中name就是普通变量。
外部代码修改:
lily = Student('lily', 10, 90) lily.name = 'lily sport' lily.print_score()
运行结果:
lily今年10岁,成绩是90
lily sport今年10岁,成绩是90
可以看到直接修改了实例的变量name。
内部函数修改普通成员变量:
lily = Student('lily', 10, 90) lily.print_score() lily.set_student('lily meimei', 10, 90) lily.print_score()
运行结果:
lily今年10岁,成绩是90
lily meimei今年10岁,成绩是90
2,如果不想让外部代码修改内部属性,在定义变量时以__两个下划线开始,变量就变成了private变量,即私有变量,只能实例内部的函数来访问,上面的定义中score就是这样的变量。外部代码想要访问内部属性时可以通过实例内的函数来获取变量。
lily = Student('lily', 10, 90) lily.print_score() lily.__score = 100 lily.print_score()
执行结果:
lily今年10岁,成绩是90
lily今年10岁,成绩是90
成绩并未修改。此时内部属性__score被改成了_Student__score,不同的python编译器会改成不同的名字,外部代码可以访问_Student__score来访问__score属性,如
lily = Student('lily', 10, 90) lily.print_score() lily.__score = 100 lily.print_score() lily._Student__score = 100 lily.print_score()
运行结果:
lily今年10岁,成绩是90
lily今年10岁,成绩是90
lily今年10岁,成绩是100
可见通过修改_Student__score来修改了__score属性。那上面的lily.__score = 100是修改了什么呢,其实他是给实例绑定了一个新变量,名字是__score,它和class内部的__score变量不是一个变量。
3,上面定义的变量中还有一个变量是_age,它的含义是我可以允许外部代码访问,但是最后不要。
lily = Student('lily', 10, 90) lily.print_score() lily._age = 11 lily.print_score()
运行结果:
lily今年10岁,成绩是90
lily今年11岁,成绩是90
变量通过外部代码修改成功了
最后
以上就是正直跳跳糖为你收集整理的类和实例-访问限制的全部内容,希望文章能够帮你解决类和实例-访问限制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复