zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    数据库web项目对数据库的操作
    Java中的反射机制
    Java中的注解
    CSS3与弹性盒布局
    MySQL存储过程实现分页及变量的定义
    开博第一文
    mpy开发物联网系列:1.mpy与服务器数据库方案
    VBS常用方法
    VBS统计页面加载时间脚本
    Ubantu系统下安装Mysql问题:configure: error: No curses/termcap library found
  • 原文地址:https://www.cnblogs.com/yescarf/p/12907038.html
Copyright © 2011-2022 走看看