zoukankan      html  css  js  c++  java
  • 第十八天

    今日内容

    一、面向对象编程

    1.1面向对象编程介绍

      '''
      面向对象编程
          核心是对象二字,对象就是一个用来盛放数据与功能的容器
          基于该思想编程思想写程序就是创造一个个的容器
    
          优点:扩展性强
          缺点:代码的复杂度提升
    
      '''
      
      #不完善的面向对象编程思想
      def message(msg):
          print("my name is %s age is %s gandel is %s" % (msg["name"],msg["age"],msg["gandel"]))
    
      msg1 = {    
          "name":"hyk",
          "age":18,
          "gandel":"male",
          "message":message
      }
    
      msg2 = {
          "name":"xxx",
          "age":19,
          "gandel":"male",
          "message":message
      }
      msg1["message"](msg1)
    

    1.2类与对象

      # 定义类的过程
      # 1、立刻运行类体内代码
      # 2.将运行过程中产生的名字都丢到类的名称空间中
      class Student:      #类:对象之间的公共信息
          school = "上海校区"
    
          def __init__(self,x,y,z):
              self.name = x
              self.age = y
              self.gender = z
    
          def tell_info(self):
              print("my name is %s age is %s gandel is %s from is %s" % (self.name,self.age,self.gender,Student.school))
    
      #调用类的过程
      #1、先创造一个空对象
      #2、自动触发类内的__init__函数的运行,将空对象当做第一个参数传入
      #返回一个初始化好的对象给obj1
      obj1 = Student("xxx",18,"male")
      obj2 = Student("yyy",19,"femal")
      obj1.tell_info()
      # print(obj1.__dict__)
      # print(obj2.__dict__)
      # print(Student.__dict__)
    
    
      #属性查找
      print(obj1.name)
    
      #先从对象本身名称空间找,没有的话再从类的名称空间中找
      # obj1.school = "xxx"
      # print(obj1.school)
    
      #类.属性 :从自己的名称空间找
      print(Student.school)
      print(Student.__init__)
    
    
      #类中的数据属性是直接共享给所有对象用的
      print(Student.school)
      print(obj1.school)
      print(obj2.school)
    
      # 类内的数据改变会影响对象的调用,对象中的数据改变只会影响自己本身
      Student.school = "XXX"
      obj1.school = "yyy"
      print(Student.school,id(Student.school))
      print(obj1.school,id(obj1.school))
      print(obj2.school,id(obj2.school))
    
      #类中函数的调用
      Student.tell_info(obj1)
      obj1.tell_info()   #将调用者的参数传入类中函数
    

    1.3面向对象编程之封装

      #为什么要隐藏数据:
      #1、隐藏数据是为了严格控制类外部访问者对属性的操作
      #2、隐藏函数属性是为了隔离复杂度,让用户只看到封装好的功能
      #隐藏类的属性
      #__开头的属性特点:
      #1、并没有真的藏起来,只是变形的
      #2、该变形只在定义阶段,扫面语法的时候执行,此后__开头的属性都不会变形
      #3、该隐藏对外不对内
      class People:
          __country = "China"  #相当于 _PeoPle__contry = ”"china"
      print(People._People__country)
  • 相关阅读:
    Linux下安装Tomcat服务器和部署Web应用
    两个有序链表的合并
    一个时间效率为O(n)的排序算法
    五种常用的Web安全认证方式
    接口认证方式
    curl 命令详解~~
    高德地图、腾讯地图、谷歌中国区地图与百度地图坐标系
    CentOS 7 yum 安装与配置 JDK
    PHP调用Google Translate API接口
    关联了微信开放平台的小程序,某些情况无法获取到unionId
  • 原文地址:https://www.cnblogs.com/kk942260238/p/14263952.html
Copyright © 2011-2022 走看看