python中的类的私有化、set和get、property装饰器

类的私有化
类的私有化,就是属性只允许类自身调用,不允许类以外调用
实现方法,格式:
__方法名()
__属性名
私有化作用:
1、隐藏属性,只能在类中使用
2、对私有属性的取值和赋值起到一定的限制作用
3、通过set方法限制赋值,通过get方法限制取值

class Test:			//定义一个类
    __name = 'tang'		//定义一个私有化属性__name
    name1 = 'jian'		//定义一个普通属性name1
    def __tang(self):		//定义一个私有化方法
        return '----> __tang'	//返回值
    def tang1(self):		//定义一个普通方法tang1
        return '----> ',self.__name	//返回值中调用内部属性self.__name
t1 = Test()			//创建一个对象
print(t1.name1)			//通过对象调用name1属性
print(t1.tang1())		//通过属性调用tang1方法
print(t1.__name)		//报错:AttributeError: 'Test' object has no attribute '__name'
print(t1.__tang())		//报错:AttributeError: 'Test' object has no attribute '__tang'

通过get对私有属性进行取值,通过set对私有属性进行赋值

class Test:			//定义一个类
    __name = 'tang'		//定义一个私有属性__name并赋值
    __age = 24			//定义一个私有属性__age并赋值
    def get_name(self):		//定义一个方法,取私有属性的值
        return '__name是:{}\t__age是:{}'.format(self.__name, self.__age)
    def set_name(self, name, age):	//定义一个为私有属性赋值
        self.__name = name		//为__name进行赋值
        self.__age = age		//__age进行赋值
        return '__name是:{}\t__age是:{}'.format(self.__name, self.__age)
        //返回的值
t = Test()		//创建一个对象
print(t.get_name())	//调用get_name方法,通过get_name获取私有属性的值
print(t.set_name('jian', 18))	//调用set_name方法,通过set_name方法修改私有属性的值

property装饰器
@property 装饰器是用来装饰类中的方法的
步骤:
1、在get方法上添加一个@property装饰器,函数的名字最好要简要,让调用的时候更简单
2、装饰set方法:
@属性名.setter
def 属性名(self, 参数):
pass
3、使用,
对象 = 类名(参数)
print(对象.属性名) ----> get方法
对象.属性名 = 值 ----> set方法

class Test:		//创建一个类
    __slots__ = ['__name', '__age'] 	__slots__ = 的作用是使外界能够向类中的符合条件的变量赋值
    def __init__(self, name, age):
        self.__name = name
        self.__age = age

    @property		//使用property装饰器,装饰后默认getter
    def name(self):	//定义一个方法,调取私有属性__name的值
        return '__name是:{}\t__age是:{}'.format(self.__name, self.__age)
    @name.setter	//这里的方法名必须和上面的方法名一致,这里是是方法name拥有setter,修改属性值
    def name(self, name): 	//定义一个方法,方法名和上面的一致,否则报错 
        self.__name = name	//修改的私有属性__name的值
        #self.__age = int(age)
        return '__name是:{}\t__age是:{}'.format(self.__name, self.__age)

t = Test('tang', 24)	//定义一个类
print(t.name)		//调取类中私有属性__name的值
t.name = 'haha'		//调用name方法为私有属性__name赋值
print(t.name)		//调取类中私有属性__name的值,你会发现时候的name属性的值已经修改了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值