python26day
内容回顾
多态:
一个类表现出的多种形态,实际上是通过继承来完成的
今日内容
super,调用父类的同名方法
按照mro顺序来寻找当前类的下一个类
封装
广义上的封装
- 方法属性名字前加了__,就变成了私有的,所有私有的内容或名字都不能在类的外部调用,只能在内部使用
狭义上的封装
- 封装的语法
- 私有的静态变量
- 私有的实例变量
- 私有的绑定方法
- 封装的语法
所有的私有化都是为了让用户不在外部调用类中的某个名字
如果完成私有化 那么这个类的封装度就更高了 封装度越高各种属性的安全性就越高,但代码复杂
加了双下划线为什么不能从类的外部调用了?
class User:
__Country='China'
__Role='法师'
print(User._User__Country)#这样也能找到
没有绝对的数据安全,定义的双下划线内容,其实存储时自动完成变形,变成了_类名__方法
私有的内容能不能被子类使用呢?
- 否
私有的原理:变形
在其它语言中的数据级别都有哪些?在python中有哪些?
- public 公有的,类内类外都能用,父类子类都能用
- protect 保护的,类内能用,父类子类都能用,类外不能用
- private 私有的,类内能用,本类能用,其他地方都不行
类中的三个装饰器(内置函数)
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
反射
概念:用字符串数据类型的名字,来操作这个名字对应的函数、实例变量、绑定方法...
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的更多相关文章
随机推荐
- C9软件工程非一线城市面试经验
本人C9软件工程毕业,由于家境一般,不想去一线城市面对天价房价,所以面的都不是互联网大厂. 人生第一面: 2021.11.29 五某汽车 软件工程岗面试 提前3天发了短信,然后拉了一个面试微信群 1. ...
- electron使用动态配置文件及持久化存储
1.如何在打包之后,把动态配置文件比如[config.json]放在根目录,不被打包到asar文件中 //解决思路,electron可以拷贝静态资源,比如你把config.json放在项目的根目录下, ...
- Android 悬浮窗
悬浮窗是一种比较常见的需求.例如把视频通话界面缩小成一个悬浮窗,然后用户可以在其他界面上处理事情. 本文给出一个简单的悬浮窗实现.可缩小activity和还原大小.可悬浮在其他activity上.使用 ...
- Java高效开发-fiddler抓包工具
1.简介 Fiddler是最常用的抓包工具之一,只要打开之后就能够实现数据包抓取,关闭之后会自动取消代理,非常方便本地调试 2.下载 阿里云盘地址:https://www.aliyundrive.co ...
- ElasticSearch+Kibana安装部署
在安装ElasticSearch时遇到了很多坑,所以在这里做个笔记记录一下. 首先我考虑的是使用docker进行部署,结果发现虚拟机直接内存溢出,我也是无解了,也就是说使用docker部署还得注意容器 ...
- Linux-saltstack-1 saltstack的安装与基本配置
@ 目录 一.环境介绍 二.安装saltstack 1.配置安装yum源 2.安装salt-master 3.安装slat-minion 三.配置salt-master 1.指定master的地址 2 ...
- java字符串比较是否都可直接使用==?
java字符串比较,两个字符串相不相等,直接用==来判断可以吗?或者判断两个字符串不相等,直接用!=? 不能 两个对象进行比较,如果使用==符号,那么比较的是这两个对象的"引用"( ...
- Flask_蓝图Blueprint(十四)
什么是蓝图? 蓝图:用于实现单个应用的视图.模板.静态文件的集合. 蓝图就是模块化处理的类. 简单来说,蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和URL相互关联的功能. 在Fla ...
- centos7 重定向符号
这篇只记录使用对应的使用方法,原理后期更新 >> 追加输出 <<追加输入 >输出 <输入 将正确和错误信息同事保留到一个文件 echo "this is ...
- Static 静态+this
(一):静态 1.Static修饰的都是静态的,都是类相关的,不需要new对象,直接采用类名.的方式访问 2.当一个属性是类级别的,所有对象的这个属性都是一样的,直接定义为静态 类=属性+方法 属性描 ...