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的更多相关文章
随机推荐
- 【LeetCode】84. Largest Rectangle in Histogram 柱状图中最大的矩形(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 单调栈 日期 题目地址: https://leetc ...
- Sum of Consecutive Integers
Sum of Consecutive Integers 题目链接 题意 问N能够分解成多少种不同的连续数的和. 思路 连续数是一个等差数列:$$ \frac{(2a1 + n -1)n}{2} = T ...
- codeforce A. 2Char(水题,暴力)
今晚发了个蛇精病,然后CF了,第一题这好难啊,然而水题一个,暴力飘过. 链接http://codeforces.com/contest/593/problem/A: 题意比较难懂吗?傻逼百度都翻译不对 ...
- 一行代码完成定时任务调度,基于Quartz的UI可视化操作组件 GZY.Quartz.MUI
前言 之前发布过第一个版本,有兴趣的可以去看看: NET Core 基于Quartz的UI可视化操作组件 GZY.Quartz.MUI 简介 GitHub开源地址:l2999019/GZY.Quart ...
- 【嵌入式】arduino常用函数
IO函数 设置引脚 pinMode(0-13,INPUT/OUTPUT/INPUT_PULLUP) 设置输出 digitalWrite(0-13,HIGH/LOW) 读取引脚 digitalRead( ...
- Java基础寒假作业-简易计算器
需求: 使用Java编写计算器的控制台程序,完成简单的加减乘除运算.实现以下功能: 1.运算选择 请用户选择一个算法(1.加法 2.减法 3.乘法 4.除法 5.关闭计算器) 2.计算 a)加法:实现 ...
- MySQL数据操作与查询笔记 • 【目录】
持续更新中- 我的大学笔记>>> 章节 内容 第1章 MySQL数据操作与查询笔记 • [第1章 MySQL数据库基础] 第2章 MySQL数据操作与查询笔记 • [第2章 表结构管 ...
- eDiary电子日记本
1.简介 eDiary是一款小巧的本地电子日记本, 也可以用来管理资料文档, 支持常用的文字编辑排版功能, 也支持插入图片功能. 支持多用户,可以设置登录用户名和密码, 每个用户可拥有多个日记文件, ...
- Windows实现桌面录屏、指定窗口录制直播,低延时,H5页面播放
接着前面记录的3种方式实现桌面推流直播: 1.Windows 11实现录屏直播,搭建Nginx的rtmp服务 的方式需要依赖与Flash插件,使用场景有限 2.Windows 11实现直播,VLC超简 ...
- Shell中 heredoc 内容转义
1.在$符号前面加反斜杠,如: cat > test.sh <<EOF \$test EOF 如果不加,将转成实际的值. 2.给EOF加个双引号,如: cat > test.s ...