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的更多相关文章
随机推荐
- 第二十一个知识点:CRT算法如何提高RSA的性能?
第二十一个知识点:CRT算法如何提高RSA的性能? 中国剩余定理(The Chinese Remainder Theorem,CRT)表明,如果我们有两个等式\(x = a \mod N\) 和\(x ...
- Unsupervised Domain Adaptation by Backpropagation
目录 概 主要内容 代码 Ganin Y. and Lempitsky V. Unsupervised Domain Adaptation by Backpropagation. ICML 2015. ...
- JDK HttpClient 单次请求的生命周期
HttpClient 单次请求的生命周期 目录 HttpClient 单次请求的生命周期 1. 简述 2. uml图 3. Http连接的建立.复用和降级 3.1 调用流程及连接的建立和复用 3.2 ...
- JUC之集合中的线程安全问题
集合线程安全问题 JDK Version:9 首先说下集合线程安全是什么:当多个线程对同一个集合进行添加和查询的时候,出现异常错误. 复现例子: package com.JUC; import jav ...
- .net core中Grpc使用报错:The remote certificate is invalid according to the validation procedure.
因为Grpc采用HTTP/2作为通信协议,默认采用LTS/SSL加密方式传输,比如使用.net core启动一个服务端(被调用方)时: public static IHostBuilder Creat ...
- 关于MySQL导入数据到elasticsearch的小工具logstash
logstash核心配置文件pipelines.yml #注:此处的 - 必须顶格写必须!!! - pipeline.id: invitation #下面路径配置的是你同步数据是的字段映射关系 pat ...
- linux 之 误删openssl文件夹重装openssl
背景 使用 scp.ssh 都报错 error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared objec ...
- ModelForm has no model class specified
未指定模型类,错误发生在把model拼写错误 来自为知笔记(Wiz)
- react中异步组件以及withRouter的使用
什么是异步组件?简单来说就是异步加载一个组件,正常情况浏览器加载的是我们打包好的bundle.js文件,那么这个文件是集合了所有js是代码,然而我们首屏加载并不需要一次性加载所有的组件,这会造成性能的 ...
- SpringBoot学习笔记三之表述层
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6803355920697917965/ 首先配置learn-admin-webui中的web.xml文件 配置Con ...