zoukankan      html  css  js  c++  java
  • 84-面向对象:封装

    面向对象3大特性之一:封装
    封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。

    所以,在使用面向对象的封装特性时,需要:
    1. 将内容封装到某处
    2. 从某处调用被封装的内容

    第一步:将内容封装到某处:

    # 创建类
    class Foo:
        def __init__(self, name, age):  # 这是构造方法,根据类创建对象时自动执行
            self.name = name
            self.age = age
    
    # 根据类FOO创建对象
    # 自动执行Foo类的 __init__方法
    obj1 = Foo('xiaohe',18)  # 将xiaohe和18分别封装到obj1 和 self的name和age属性中
    
    # 根据类FOO创建对象
    # 自动执行Foo类的 __init__方法
    obj2 = Foo('xiaoming',20)  # 将xiaoming和20分别封装到obj1 和 self的name和age属性中

     第二步:从某处调用被封装的内容:

    调用被封装的内容时,有两种情况:
      1. 通过对象直接调用
      2. 通过self间接调用


    1、通过对象直接调用被封装的内容:

    class Foo:
        def __init__(self, name, age):  
            self.name = name
            self.age = age
    
    obj1 = Foo('xiaohe',18)
    print(obj1.name)  # 直接调用obj1对象的name属性
    print(obj1.age)  # 直接调用obj1对象的age属性
    
    obj2 = Foo('xiaoming',20)
    print(obj2.name)  # 直接调用obj2对象的name属性
    print(obj2.age)  # 直接调用obj2对象的age属性

    2. 通过self间接调用:

    class Foo:
        def __init__(self, name, age):  
            self.name = name
            self.age = age
    
        def detail(self):
            print(self.name)
            print(self.age)
    
    # Python默认会将obj1传给self参数,即:obj1.detail(obj1),所以,此时方法内部的 self = obj1,
    # 即:self.name 是 xiaoming ;self.age 是 18
    obj1 = Foo('xiaoming', 28)
    obj1.detail()
    
    # Python默认会将obj2传给self参数,即:obj1.detail(obj2),所以,此时方法内部的 self = obj2,
    # 即:self.name 是 xiaohe ; self.age 是 78
    obj2 = Foo('xiaohe', 30)
    obj2.detail()

    对于面向对象的封装来说,其实就是使用构造方法将内容封装到 对象 中,然后通过对象直接或者self间接获取被封装的内容。

  • 相关阅读:
    性能测试的一些大实话:会linux命令以及其它工具,到底能不能做性能分析调优?
    使用Docker方式部署Gitlab,Gitlab-Runner并使用Gitlab提供的CI/CD功能自动化构建SpringBoot项目
    Docker安装Gitlab
    Docker部署ELK
    Dockerfile中ADD命令详细解读
    使用Gitlab CI/CD功能在本地部署 Spring Boot 项目
    SSH 克隆跟HTTP 克隆地址的区别
    Docker安装Gitlab-runner
    Docker方式安装Jenkins并且插件更改国内源
    使用docker-compose部署SonarQube
  • 原文地址:https://www.cnblogs.com/hejianping/p/11119847.html
Copyright © 2011-2022 走看看