zoukankan      html  css  js  c++  java
  • python面向对象之封装

    封装(变形)attribute变为_类名__AttrName

    封装的特点:

    1.在类外部无法直接obj.__AttrName
    在类定义阶段,类的属性已变形为_类名__AttrName

    所以类外部生成的实例对象就无法直接调用__AttrName,但可以调用_类名__AttrName

    
    
    class Students:
    def __init__(self,name,age,sex):
    self.__name = name
    self.__age = age
    self.__sex = sex


    s1 = Students('ryan',18,'man')
    print(s1._Students__name)
    #ryan

    2.在类内部是可以直接使用:obj.__AttrName

    因为在类内部的属性均会在定义阶段自动变形为_类名__AttrName,是可以互相调用的

    class Students:
        def __init__(self,name,age,sex):
            self.__name = name
            self.__age = age
            self.__sex = sex
        def info(self):
            print('Im %s Im %s years old ,Im a %s'%(self.__name,self.__age,self.__sex))
    
    
    s1 = Students('ryan',18,'man')
    s1.info()
    print(s1._Students__name)
    #Im ryan Im 18 years old ,Im a man
    #ryan

    3.子类无法覆盖父类__开头的属性

    不同的类封装后变形为不同的类名属性

    class Students:
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
        def __info(self):
            print('parentsclass')
            print('Im %s Im %s years old ,Im a %s'%(self.name,self.age,self.sex))
    
    
    
    
    class TeenStudents(Students):
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
        def __info(self):
            print('subclass')
            print('Im %s Im %s years old ,Im a '%(self.name,self.age))
    
    s1 = TeenStudents('ryan',18,'man')
    s1._Students__info()
    s1._TeenStudents__info()
    print(s1.name)
    #parentsclass
    #Im ryan Im 18 years old ,Im a man
    #subclass
    #Im ryan Im 18 years old ,Im a 
    #ryan
  • 相关阅读:
    Response
    servelt乱码问题(tomcat服务端编码为ISO-8859-1)
    Servlet中的常用类以及常用方法
    EKF优化:协方差coff计算公式、意义、Code优化
    使用std::cout不能输出显示
    SLAM: Inverse Depth Parametrization for Monocular SALM
    SLAM: 单目视觉SLAM的方案分类《机器人手册》
    SLAM: SLAM的发展历程(WIKI)
    SLAM: VSLAM扫盲之旅
    安卓系统使用摄像头API
  • 原文地址:https://www.cnblogs.com/thanos-ryan/p/13603812.html
Copyright © 2011-2022 走看看