在实际开发中,对象的某些属性或者方法 可能只希望在对象的内部被使用,而不希望在外部被访问到;
私有属性 就是对象不希望公开的属性;
私有方法 就是对象不希望公开的方法;
python是如何定义成员或者方法的可见性
如果属性或者方法开头是以双下划线开始的,那么就是私有的方法或者属性
class Student(): def __init__(self, name, age): # 初始化实例变量 self.name = name self.age = age #私有变量 self.__score = 0 self.__class__.sum += 1 #私有方法,对象不可访问 def __marking(self, score): self.score = score print('考试成绩是'+str(score)) student = Student('zhangsan', 18) student.__score = 200 print(student.__score) student.__marking(100)
运行以上代码,可以看到我们访问私有方法,python是会报错的,访问私有属性的时候python确没有报错,这是因为python是动态类型的语言,student.__score在python中会认为是给实例又添加了一个属性,所以不会报错
_Student__score才是类中定义的私有属性,python会把类中的私有属性变为_类名__私有属性名称,而__score则是后面我们动态给对象添加的属性,这个不是私有的
class Student(): # 实例变量 sum = 0 # 构造函数 def __init__(self, name, age): # 初始化实例变量 self.name = name self.age = age self.__score = 0 self.__class__.sum += 1 def marking(self, score): self.__score = score print('考试成绩是'+str(score)) student = Student('zhangsan', 18) student.marking(100) print(student.__score)
以上代码运行,会直接报错,因为访问了类中的私有变量
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接