#coding:utf-8 # 如何让类内部定义的一些属性,不被外部访问,给类内部的属性增加了私有权限设置。 # Python中设置私有变量(private),需要在变量前加__ class People(object): """docstring for People""" def __init__(self, name, age, weight): self.__name = name self.__age = age self._weight = weight # 由于私有属性只能在类内部使用,想要在类外部获取私有属性的值,通过定义函数完成。 def show(self): print '姓名:%s,年龄:%s'%(self.__name, self.__age) # 如何将类内部私有变量的值,返回到类的外部,供对象使用? # setter和getter方法:用于对一些私有变量进行赋值或取值的操作。 def set_name(self, name): if isinstance(name, str): self.__name = name else: raise ValueError("'name' is not 'str' type!") def get_name(self): return self.__name def set_age(self, age): if age >= 16: self.__age = age else: raise ValueError('age must be out of range 16!') def get_age(self): return self.__age p1 = People("张三", 30, 80) # print '---------',p1.__name # print hasattr(p1, '__name') # print getattr(p1, '__name') p1.show() p1.set_name('zhangsan') name = p1.get_name() print 'p1对象的姓名是:',name p1.set_age(100) age = p1.get_age() print 'p1对象的年龄是:',age p1.set_name('aaa') # import random # help(random) # _name/_age: 以一个下划线开头的实例变量,在类的外部是允许访问的。 print p1._weight print hasattr(p1, '_weight') # 一般也将_name这种视为私有变量,不会在类的外部进行访问。 # __name: 不能进行直接访问,只是解释器将__name修改成了_People__name。 # print '-------',p1._People__name # print '------',p1._People__age
实例变量的权限
最新推荐文章于 2022-01-18 22:14:23 发布