zoukankan      html  css  js  c++  java
  • 面向对象编程案例04--访问控制

    # -*- coding: utf-8 -*-
    #python 27
    #xiaodeng
    #面向对象编程案例04--访问控制
    #如果要让内部属性不被外部所访问,怎么做?
    #在属性的名称前加上两个下划线__即可,在python中,实例变量名下面如果加上__开头,就变成了一个私有变量private
    #只有内部可以访问,而外部不能去访问
    #demo
    
    #01
    class Student():
        def __init__(self,name,age):
            self.__name=name
            self.__age=age
        def printAge(self):
            print '%s:%s'%(self.__name,self.__age)
    
    
    if __name__=="__main__":
        bart=Student('xiaodeng',28)
        #外部的代码不能随意修改对象内部的状态,这样通过访问限制的保护、代码更加健壮
        #bart.__name #出现错误无法访问私有属性
        bart.printAge()
    
    
    
    #02
    #如果获得__name属性呢?给Student类新增getName和getAge方法
    ##############修改上面的案例#####################
    print '--'*25
    class Student():
        def __init__(self,name,age):
            self.__name=name
            self.__age=age
        def printAge(self):
            print '%s:%s'%(self.__name,self.__age)
            
        #如果获得__name属性呢?给Student类新增getName和getAge方法    
        def getName(self):#getName
            return self.__name
        
        def getAge(self):#getAge
            return self.__age
    
    if __name__=="__main__":
        bart=Student('xiaodeng',28)
        print bart.getName()
        print bart.getAge()
        bart.printAge()
    
    
    
    #03
    #如果要允许从外部代码中修改Age怎么办?
    ##############修改上面的案例#####################
    print '--'*25
    class Student():
        def __init__(self,name,age):
            self.__name=name
            self.__age=age
        def printAge(self):
            print '%s:%s'%(self.__name,self.__age)
            
        def getName(self):
            return self.__name
        
        def getAge(self):
            return self.__age
        
        #设置实例属性
        def setAge(self,age):#setAge
            if 20<age<100:
                self.__age=age
            else:
                raise ValueError('error age')
    
    if __name__=="__main__":
        bart=Student('xiaodeng',28)
        bart.setAge(30)
        print bart.getAge()
        bart.printAge()
        
        
  • 相关阅读:
    WCF 发布在iis上
    记一次服务器迁移过程
    期末总结
    典型用户和用户场景
    软件工程第四次作业 结对编程 增量开发
    第三次作业 结对编程
    我对git认识
    浅谈对IT的认识!
    本地Git仓库和远程仓库的创建和关联及github上传(git push)时出现error: src refspec master does not match any解决办法
    CSS下拉菜单
  • 原文地址:https://www.cnblogs.com/dengyg200891/p/4867869.html
Copyright © 2011-2022 走看看