首页 > 其他 > 详细

私有化

时间:2020-02-29 10:55:02      阅读:55      评论:0      收藏:0      [点我收藏+]

xx: 公有变量

_x: 单前置下划线,私有化属性或?法, from somemodule import *禁?导
?,类对象和?类可以访问

__xx: 双前置下划线,避免与?类中的属性命名冲突, ?法在外部直接访
问(名字重整所以访问不到)

__xx__:双前后下划线,?户名字空间的魔法对象或属性。 例
如: __init__ , __ 不要??发明这样的名字

xx_:单后置下划线,?于避免与Python关键词的冲突

通过name mangling(名字重整(?的就是以防?类意外重写基类的?法或者
属性)如: _Class__object) 机制就可以访问private了。

私有化产生的背景:

在开发过程中,如果不希望外界随便动我的属性,往往就会把属性对外隐藏起来

什么叫对外隐藏?

就是,你能够看到对象的属性,但是你修改不了,或者单独取一个属性看,都看不了,比如p = Person(‘Jack‘,‘18‘),我要单独看这个对象的名字,这样是看不了的

class Student:
    def __init__(self, name, age, score):
        self.__name = name
        self.__age = age
        self.__score = 59

    def __str__(self):
        return ‘姓名:{},年龄:{},考试分数:{}‘.format(self.__name, self.__age, self.__score)


s = Student(‘Jack‘, 20, 59)
print(s)
print(s.__name)

技术分享图片

 技术分享图片

 因此,我们需要定义公有的get方法和set方法,暴露给外面,便于赋值和取值

 封装:1.私有化属性,2.定义公有的set和get方法

 

__属性:就是将属性私有化,访问范围就仅仅限于类中了,只能在类中进行修改,因此在类里面定义set方法,进行修改  

class Student:
    def __init__(self, name, age, score):
        self.__name = name
        self.__age = age
        self.__score = 59

    # 定义公有的set和get方法
    # set是为了赋值
    def setAge(self, age):
        self.__age = age

    def __str__(self):
        return ‘姓名:{},年龄:{},考试分数:{}‘.format(self.__name, self.__age, self.__score)


s = Student(‘Jack‘, 20, 59)
print(s)
# 对私有化属性age的值进行修改
s.setAge(30)
print(s)

技术分享图片

 技术分享图片

 

 

  

私有化

原文:https://www.cnblogs.com/GumpYan/p/12381705.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!