美文网首页
40.私有变量、方法实现类的封装

40.私有变量、方法实现类的封装

作者: 经纶先生 | 来源:发表于2018-03-19 10:43 被阅读0次

    私有变量

    私有变量或者私有属性,一般以 双下划线开头 的变量
    可以在class内部通过方法调用,但是不能被实例化的对像直接调用

    class People(object):
        def __init__(self,name,age):
            self.name = name
            self.__age = age
    
        def job(self):
            if self.__age > 50:
                print("不录用。。。。")
            else :
                print("你被录用了")
    
    
    
    p = People("dailiang",16)
    p2 = People("zhuzegang",73)
    
    
    p.job()     #你被录用了
    p2.job()   #不录用。。。。
    
    print(p.name)  #dailiang
    print(p.age)   #AttributeError: 'People' object has no attribute 'age'
    可以看到age就是属于私有属性了
    
    用处,比如我们有一个员工信息查询系统,员工的工资是不能够显示的
    

    ok,上面我们说age这叫私有变量
    其实也可以说我们把age这个属性给封装在类里面了,又叫做类的封装

    私有方法:

    与私有变量一样,以双下划线开始的方法叫做私有方法

    class People(object):
        def __init__(self,name,age,salary):
            self.name = name
            self.age = age
            self.salary = salary
    
        def __addsalary(self):   #私有方法
            self.salary += 5000
    
        def newsalary(self):
            if self.salary < 10000:
                self.__addsalary()
                print(self.salary)
            else:
                print(self.salary)
    
    
    p = People("dailiang",16,300)
    p2 = People("zhuzegang",73,50000)
    
    print(p.newsalary())  #5300
    print(p2.newsalary())  #50000
    
    p.__addsalary()  #AttributeError: 'People' object has no attribute '__addsalary'
    

    私有方法不能在外部通过实例被调用,但是在类内部可以调用

    相关文章

      网友评论

          本文标题:40.私有变量、方法实现类的封装

          本文链接:https://www.haomeiwen.com/subject/oesrqftx.html