内容回顾

多态:

​ 一个类表现出的多种形态,实际上是通过继承来完成的

今日内容

  1. super,调用父类的同名方法

    按照mro顺序来寻找当前类的下一个类

  2. 封装

    • 广义上的封装

      • 方法属性名字前加了__,就变成了私有的,所有私有的内容或名字都不能在类的外部调用,只能在内部使用
    • 狭义上的封装

      • 封装的语法

        • 私有的静态变量
        • 私有的实例变量
        • 私有的绑定方法
    • 所有的私有化都是为了让用户不在外部调用类中的某个名字

    • 如果完成私有化 那么这个类的封装度就更高了 封装度越高各种属性的安全性就越高,但代码复杂

    • 加了双下划线为什么不能从类的外部调用了?

      • class User:
        __Country='China'
        __Role='法师'
        print(User._User__Country)#这样也能找到

        没有绝对的数据安全,定义的双下划线内容,其实存储时自动完成变形,变成了_类名__方法

    • 私有的内容能不能被子类使用呢?

    • 私有的原理:变形

  3. 在其它语言中的数据级别都有哪些?在python中有哪些?

    • public 公有的,类内类外都能用,父类子类都能用
    • protect 保护的,类内能用,父类子类都能用,类外不能用
    • private 私有的,类内能用,本类能用,其他地方都不行
  4. 类中的三个装饰器(内置函数)

    • property

      #property I
      #
      from math import pi
      class Circle:
      def __init__(self,r):
      self.r=r
      def area(self):
      return pi*self.r**2 c1=Circle(5)
      print(c1.r)
      print(c1.area()) ##
      from math import pi
      class Circle:
      def __init__(self,r):
      self.r=r
      @property #把一个方法伪装成属性,在调用这个方法时不需要加括号就能用,装饰的这个方法不能有参数
      def area(self):
      return pi*self.r**2 c1=Circle(5)
      print(c1.r)
      print(c1.area)
      #property的第二个应用场景:和私有属性合作
      class User:
      def __init__(self,usr,pwd):
      self.usr=usr
      self.__pwd=pwd
      @property
      def pwd(self):
      return self.__pwd 汤达人=User('汤达人','123')
      print(汤达人.pwd)
      • setter(了解)
      • delter(了解)
    • classmethod

    • staticmethod

  5. 反射

    • 概念:用字符串数据类型的名字,来操作这个名字对应的函数、实例变量、绑定方法...

    • name='henri'
      age=22
      n=input('>>>')
      if n=='name':
      print(name)
      elif n=='age':
      print(age)
      #这样变量多了很麻烦
      #有些时候明明知道一个变量的字符串数据类型的名字,但调不到,用反射
    • 反射对象的 实例变量

    • 反射类的 静态变量、绑定方法

    • 模块中的 所有变量

      • 被导入的模块
      • 当前执行的py文件--脚本
    • class Person:
      def __init__(self,name,age):
      self.name=name
      self.age=age henri=Person('henri',22)
      leo=Person('leo',23) ret=getattr(henri,'name')
      print(ret)
      ret=getattr(leo,'name')
      print(ret)
      #这就是反射

代码总行数2702+62=2764行

python26day的更多相关文章

随机推荐

  1. 破解UltraEdit64 Version 28.20.0.92 技术分享。

    本文为原创作品,转载请注明出处,作者:Chris.xisaer E-mail:69920579@qq.com QQ群3244694 补丁程序下载地址:https://download.csdn.net ...

  2. 主流的 API 架构

    1. RPC:调用另一个系统的函数 2. SOAP:使数据作为服务可用 3. REST:使数据作为资源可用 4. GraphQL:仅请求所需要的数据 1. RPC:调用另一个系统的函数 远程过程调用是 ...

  3. API 网关功能

    反向代理和路由 - 大多数项目采用网关的解决方案的最主要的原因.给出了访问后端 API 的所有客户端的单一入口,并隐藏内部服务部署的细节. 负载均衡 - 网关可以将单个传入的请求路由到多个后端目的地. ...

  4. BeanUtils属性转换工具

    commons 包的 BeanUtils 进行属性拷贝性能较差:Spring 的 BeanUtils 性能相对较好. public class A { private String name; pri ...

  5. 「算法笔记」FHQ-Treap

    右转→https://www.cnblogs.com/mytqwqq/p/15057231.html 下面放个板子 (禁止莱莱白嫖板子) P3369 [模板]普通平衡树 #include<bit ...

  6. 单芯片CS5265替代VL102+PS176|设计USB TYPEC转HDMI方案|替代VL102+PS176

    一.PS176概述PS176是一个显示端口 (DP)至HDMI 2.0视频接口转换器适用于需要视频协议转换的电缆适配器.电视接收器.监视器和其他应用.它将接受任何显示端口输入格式,包括DP 1.1a. ...

  7. MySQL数据操作与查询笔记 • 【第6章 聚合函数和分组查询】

    全部章节   >>>> 本章目录 6.1 sum.max 和 min 聚合函数 6.1.1 聚合函数介绍 6.1.2 sum 函数 6.1.3 max/min 函数 6.2 a ...

  8. Hadoop编译打包记录

    Hadoop编译打包,基于2.7.2版本的源码. # 打包过程中需要使用到的工具 java -version mvn -version ant -version type protoc type cm ...

  9. CF612E Square Root of Permutation

    题目分析 我们首先模拟一下题意 假设有一个 \(q _1\) \(p\) \(a_1\) \(a_x\) \(a_{a_1}\) \(a_{a_x}\) \(q\) \(x\) \(a_1\) \(a ...

  10. hive 之 查看某库一共有多少张表

    思路一: show出所有表,然后wc -l hive -e" use database_name; show tables; "|wc -l 思路二: 1.show出当前库所有的表 ...