2.25python属性和方法私有化

Posted yescarf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.25python属性和方法私有化相关的知识,希望对你有一定的参考价值。

#保护对象的属性
#如果有一个对象,当需要对 其进行修改属性时, 有2种方法
# 对象名 属性名 = 数据——— >直接修改
# 对象名 方法名()——————>间接修改
#为了更好的保存属性安全,即不能随意修改 ,一般的处理方式为:
#*将属性定义为私有属性(两个下划线开头)
#*添加一个可以通用的方法,供调用

#此处需再看看相关资料
#属性赋值:
class User:
    def __str__(self):
        return 用户名为:%s,密码为:%s%(self.username,self.password)

u1 = User()
u1.username = 张三
u1.password = 1563535
print(u1)
#output :用户名为:张三,密码为:1563535 这里只要赋值就可以直接修改数据

#为了限定password的字符长度
class Usernew:
    def __str__(self):
        return 用户名为:%s,密码为:%s % (self.username, self.password)

    def set_pw(self,pw):
        if len(pw)>6:
            self.password = pw
        else:
            print(密码不足六位)
‘‘‘u2 = Usernew()
u2.username = ‘李四‘
u2.set_pw(‘1535‘)
print(u2)‘‘‘
#output:密码不足六位.程序错误找不到password
u3 = Usernew()
u3.username =  王五
u3.set_pw(12456222485)#当u3不调用set_pw时,u3.password = ‘123‘时,程序能正常运行,不会报错,由此引出关于对象的隐藏属性的方法
print(u3)
#output:用户名为:王五,密码为:12456222485

#为了更好的保存属性的安全,使用self.__pw
class Usertest:
    def __init__(self,pw):

        if  len(pw)>= 6:
            self.__pw = pw
        else:
            print(%s不能作为密码%pw)  #能执行

    def __str__(self):
        return密码为:%s%(self.__pw)

#u4 = Usertest(‘123‘)
#u5 = Usertest(‘123456‘)
#print(u4,u5)
#output: 报错:‘Usertest‘ object has no attribute ‘_Usertest__pw‘

#当对u5的__pw进行赋值时依旧报错u5.__pw()=‘2211633‘,因为外部不能访问到__pw()

#需要通过函数返回值的方式获得__pw的值
class Usertest2:
    def __init__(self,name,pw):
        self.name = name
        if len(pw)>=6:
            self.__pw = pw
        else:
            print(%s不能作为密码)
    def __str__(self):
        self.__take_pw()
        return用户名为:%s,密码为:%s%(self.name ,self__pw)
    def get_pw(self):
        return self.__pw
    def __take_pw(self):
        print(self.__pw)
u6 = Usertest2(赵六,153525)
print(u6.get_pw())
print(u6)

 

以上是关于2.25python属性和方法私有化的主要内容,如果未能解决你的问题,请参考以下文章

Python中的私有属性和私有方法

Python私有属性和私有方法

06_私有属性和私有方法-python

python私有方法和私有属性属性理解

Python 面向对象 --- 私有属性和私有方法

python 私有属性和私有方法