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
  • 相关阅读:
    在 ServiceModel 客户端配置部分中,找不到引用协定
    nopi 导出excel 带图片
    c# async await 理解 结合并行处理
    从数据库更新模型时出现System.ArgumentException
    C# HTTP请求 异步(async await)
    C# HTTP请求
    SQL列转行
    详解C# 匿名对象(匿名类型)、var、动态类型 dynamic
    JavaScript (function (){}()) 与(function(){})()
    记ssh错误排查-ansible
  • 原文地址:https://www.cnblogs.com/thanos-ryan/p/13603812.html
Copyright © 2011-2022 走看看