# 什么是封装?    
  # 广义上(大家认为的) :        
    # 把一类事务的相同的行为和属性归到一个类中
# class Dog:
#     def bite(self):pass    
    # 狭义上(学术上的定论) :        
      # 把一些特殊的属性和方法藏在类中        
      # 外部无法调用,只有内部可以调用

  1. # 类的命名空间(类的对象共享的资源) :
  2. # 静态属性
  3. # 类方法
  4. # 静态方法
  5. # 普通方法
  6. # property方法
  1. # 对象的命名空间(对象独有的资源):
  2. # 对象的属性
  3. # 对象的方法
  1. # 狭义上
  2. # 私有成员
  3. # 在类的内部 __成员名
  4. # 在类的外部 不能用
  5. # 在存储的空间中 _类名__成员名
  1. # 1.私有成员不能在类的外部使用,也不能被继承
  2. # 无论在哪个类中调用私有成员,一定是在哪个类调,就用哪个类的
  1. class Foo(object):
  2. def __init__(self):
  3. self.__func() # _Foo__func
  4. self.func()
  5. def __func(self):print('in Foo __func') # _Foo__func
  6. def func(self):print('in Foo func')
  7.  
  8. class Son(Foo):
  9. def __func(self):print('in Son __func') # _Son__func
  10. def func(self):print('in Son func')
  11. Son()#in Foo __func in Son func
  1. # 2.类中的三个装饰器方法
  2. # 先实现功能
  3. # 某个方法如果用到self 传self
  4. # 某个方法如果没用到self,用到类 传cls ,加@classmethod装饰器 *****
  5. # 某个方法如果没用到self,没用到类 啥也不传,加@staticmethod装饰器
  6. # 但凡是不需要传self参数的,都不需要实例化,直接使用类调用就可以了
  7. # @property : 伪装一个方法成为一个属性,调用的时候不需要加()
  1. # 3.反射 非常重要
  2. # a.b这样的情况
  3. # 如果由于某种原因,b变成了 'b'
  4. # 那么就是用getattr(a,'b')的形式获取b对应的值
  5. # 如果b是一个值 那么getattr的结果就是值
  6. # 如果b是一个地址 那么getattr的结果就是地址,地址()就是执行
  7. # from sys import modules
  8. # getattr(modules[__name__],'全局变量名')
  9. # 从当前文件中寻找全局变量对应的值/地址
  1. from sys import modules
  2. a = 2
  3. b = 4
  4. print(getattr(modules[__name__],'c',123))#123
  1. # 有一个文件,有很多变量,也有很多函数,但是没有类
  2. # 用户输入input任意的变量名或者函数名,
  3. # 如果是变量 直接打印 - 用到一个内置函数
  4. # 如果是函数 直接调用 - 用到一个内置函数
  5. # 要求程序不报错
  6. import sys
  7. a='普通变量a'
  8. b='普通变量b'
  9. A='普通常量A'
  10. B='普通常量B'
  11. def f1():
  12. print('f1 function')
  13. def f2():
  14. print('f2 function')
  15. def f3():
  16. print('f3 function')
  17. print(type(f3))
  18. while 1:
  19. res = input('>>>:').strip()
  20. if res.upper() == 'Q':break
  21. if hasattr(sys.modules[__name__],res):
  22. obj = getattr(sys.modules[__name__],res)
  23. if callable(obj):
  24. obj()
  25. else:
  26. print(obj)
  27. else:
  28. print('error')
  1. # 有一个类,有很多静态属性,也有很多静态方法/类方法
  2. # 用户输入input任意的属性名或者方法名,
  3. # 如果是属性 直接打印 - 用到一个内置函数
  4. # 如果是方法 直接调用 - 用到一个内置函数
  5. # 要求程序不报错
  6. import sys
  7. a='普通变量a'
  8. b='普通变量b'
  9. A='普通常量A'
  10. B='普通常量B'
  11. class fu:
  12. co='adc'
  13. print(type(co))
  14. @classmethod
  15. def f1(cls):
  16. print('f1 function')
  17. @staticmethod
  18. def f2():
  19. print('f2 function')
  20. from types import MethodType
  21. while 1:
  22. res = input('>>>:').strip()
  23. if res.upper() == 'Q':break
  24. if hasattr(fu,res):
  25. obj = getattr(fu,res)
  26. if isinstance(obj,MethodType):
  27. obj()
  28. else:
  29. print(obj)
  30. else:
  31. print('error')

day31 Pyhton 总结的更多相关文章

  1. day31 Pyhton 面向对象的基础 三大特性

    一.内容回顾 封装 1.概念 笔记 2.__名字 在类的外部就不能用了 3.私有化的 不能被子类继承,也不能在其他任何类中调用 三个装饰器方法(装饰类中的方法) 1.不被修饰的  普通方法,会使用对象 ...

  2. Pyhton学习——Day31

    # 服务端和接收端的send和reve没有任何关系,只与协议之间有关系# 应用程序产生的数据一定会交给操作系统,并由操作系统往外发送# 发送端什么时候会清空自己的内存?# 收到接收端的ACK响应以后才 ...

  3. Notepad++编辑Pyhton文件的自动缩进的问题(图文)

    转自:http://www.xuebuyuan.com/1102224.html 这个问题一直困扰我很久,Python对缩进很敏感,一般建议缩进用空格,而 Notepad++的自动缩进是用的TAB,g ...

  4. pyhton读取json格式的气象数据

    原文关于读取pm25.in气象数据的pyhton方法,以及浅析python json的应用 以pm25.in网站数据为例. 1.方法介绍 首先感谢pm25.in提供了优质的空气污染数据,为他们的辛勤劳 ...

  5. Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续)

    Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续) 今天延续昨天的内容,主要对为什么一个处理会分解成多个Job执行进行解析. 让我们跟踪下Job调用过 ...

  6. 自定义组合控件,适配器原理-Day31

    自定义组合控件,适配器原理-Day31 mobile2.1 主页定义 手机上锁功能 1.弹出设置密码框. 手机下载进度 自定定义控件 控件的属性其实就是控件类一个属性设置属性调用类的set方法方法, ...

  7. Pyhton编程(一)之第一个Pyhton程序

    一:Python的第一个程序 Python在Windows系统和Linux系统下都可以安装,这里不过多说明安装过程,linux系统默认情况已经安装了Python2x的版本.注:目前使用的Python均 ...

  8. Pyhton编程(二)之变量、用户输入及条件语句

    一:变量 变量定义的规则 1)只能由数字.字母.下划线组成(不能以数字开头) 2)不能使用关键字作为变量名 ['and', 'as', 'assert', 'break', 'class', 'con ...

  9. pyhton 关于 configparser 配置 模块 实践使用中碰到的坑

    今天做一个ATM的练习,想要用configparser模块,写一个配置文件,存放用户信息. 结果状况连连,叫苦不迭. 我用configparser模块,想要对配置文件,进行读.写.改.查 功能. 其中 ...

随机推荐

  1. Salesforce LWC学习(二十五) Jest Test

    本篇参看: https://trailhead.salesforce.com/content/learn/modules/test-lightning-web-components https://j ...

  2. oracle之三RMAN概述

    RMAN概述 6.1 rman的定义和功能: 1) Recovery Manager 2)建立备份和恢复的server process,在oracle server上做备份和恢复 3)rman 备份d ...

  3. oracle之二控制文件

    控制文件 3.1 控制文件的功能和特点:       1)定义数据库当前物理状态,不断在往controlfile写入[SCN等]       2)维护数据的一致性       3)是一个二进制文件   ...

  4. oracle之字符集

    全球化特性与字符集 数据库的全球化特性是数据库发展的必然结果,位于不同地区.不同国家.不用语言而使用同一数据库越来越普遍.Oracle数据库提供了对全球化数据库的支持,消除不同文字.语言环境.历法货币 ...

  5. Catalina 动态壁纸相关设置

    关闭SIP 重启,在开机时一直按Command+r进入recovery模式. 打开终端,如图所示: 在终端中输入命令,回车: csrutil disable 然后重启 设置动态壁纸 首先需在Dynam ...

  6. vue-ajax/axios请求函数封装: axios+promise

    项目文件目录/src/api ajax.js /** * ajax 请求函数模块 * 返回值为promise对象 */ import axios from 'axios' export default ...

  7. docker注册&打包

    在https://hub.docker.com上注册账号,新建reosity docker images命令列出dockerlist docker login命令登录:这其中出现了一个问题,登录不上去 ...

  8. 7种jvm垃圾回收器,这次全部搞懂

    前言 之前我们讲解了jvm的组成结构与垃圾回收算法等知识点,今天我们来讲讲jvm最重要的堆内存是如何使用垃圾回收器进行垃圾回收,并且如何使用命令去配置使用这些垃圾回收器. 堆内存详解 上面这个图大家应 ...

  9. oracle数据库外部连接无法访问

    服务器出现的问题是运行的项目无法访问oracle数据库连接,用plsql输入用户名密码后卡死,无法连接.但是通过命令窗口对oracle数据库操作正常,对oracle服务进行查看并重启,并无异常,运行t ...

  10. Java面试题之计算字符/字符串出现的次数

    一.计算字符在给定字符串中出现的次数 二.计算字符串在给定字符串中出现的次数 1 import java.util.HashMap; 2 import java.util.Map; 3 4 publi ...