day8_类的装饰器和反射
- """
- 类的装饰器:
- @property
- 当类的函数属性声明 @property后, 函数属性不需要加括号 即可调用
- @staticmethod
- 当类的函数属性声明 @staticmethod后, 把函数属性声明为静态属性, 不能直接访问类属性与实例属性
- @classmethod
- 当函数属性声明 @classmethod后,把函数属性声明为类属性,不能直接访问实例属性,类可以直接调用
- """
- class A():
- q = "清华大学"
- def __init__(self):
- self.name = "不忘初心,方缘继续努力ing"
- self.oh = 666
- @property
- def add(self):
- print(self.name)
- return 1+1
- @staticmethod
- def result(para):
- # para()是一个对象
- print(para().add) # 函数属性声明为静态属性时,不能直接访问类属性和实例属性
- print(para.add)
- return 3*3
- @classmethod
- def clas(cls):
- # print(cls.oh) # 函数属性声明为类属性时,不能直接访问实例对象,但可以访问类属性
- print(cls.q) # q为类A的静态属性
- # 调试程序
- if __name__ == "__main__":
- # 创建类A的对象(实例)data
- data = A()
- # 参数A是一个类
- A.result(A)
- # 函数属性不用加括号
- print(data.add)
- data.clas()
- # 打印对象的属性字典
- 对象 = A()
- print(对象.__dict__)
- """
- 反射:
- hasattr(obj, str) 返回布尔值, 当str存在于 obj时,返回true, 否则返回false
- getattr(obj, str) 返回str的内存地址
- """
- class He():
- # pass
- def interface(self,user,passwd):
- if user == "belief" and passwd == "123":
- return 1 # 等效于return True
- else:
- error = "账号或密码错误!!!"
- return error
- class I():
- def login(self):
- if hasattr(He,"interface"):
- user = input("用户名>>>:")
- passwd = input("密码>>>:")
- func = getattr(He,"interface")
- data = func(self,user,passwd)
- if data == 1: # 等效于if data == True
- print("这是一个完美的登陆界面!!!")
- else:
- print(data)
- else:
- print("他去旅游了,还没回来敲代码!!!")
- def index(self):
- print("登陆成功后执行我")
- if __name__ == "__main__":
- i = I()
- i.login()
day8_类的装饰器和反射的更多相关文章
- python描述符(descriptor)、属性(property)、函数(类)装饰器(decorator )原理实例详解
1.前言 Python的描述符是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和心得记录下来,也为正在为了该问题 ...
- 11.python描述符---类的装饰器---@property
描述符1.描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()这三个内置方法中的一个,描述符也被称为描述符协议(1):__ ...
- Python之路(第二十八篇) 面向对象进阶:类的装饰器、元类
一.类的装饰器 类作为一个对象,也可以被装饰. 例子 def wrap(obj): print("装饰器-----") obj.x = 1 obj.y = 3 obj.z = 5 ...
- python使用类作为装饰器
1.普通就是一个函数作为装饰器,也可以用类名作为装饰器. 因为类和函数都是callable的,都可以使用括号来调用运行他. 2.上上篇的缓存一段时间的还是函数作为装饰器,类只是充当了比模块更下一级的命 ...
- Python全栈day28(类的装饰器)
类是一个对象也可以像函数一样加装饰器 类的装饰器.py def deco(obj): print('======',obj) obj.x=1 obj.y=2 obj.z=3 return obj # ...
- python 类的装饰器
我们知道,在不改变原有代码的基础上,我们可以使用装饰器为函数添加新的功能.同理,一切皆对象,我们也可以使用装饰器为类添加类属性.what? def deco(obj): obj.x = 1 obj.y ...
- day28-描述符应用与类的装饰器
#!/usr/bin/env python# -*- coding:utf-8 -*-# ------------------------------------------------------- ...
- Python学习第十九课——类的装饰器
类的装饰器 # def deco(func): # print('==========') # return func # # # @deco #test=deco(test) # # def tes ...
- 第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法
第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法 上节介绍了Python中类的静态方法,本节将结合案例详细说明相关内容. 一. 案例说明 本节定义了类Sta ...
随机推荐
- MATLAB实例:对称双随机矩阵
MATLAB实例:对称双随机矩阵 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 双随机矩阵(doubly stochastic matrix):元素属 ...
- JUC-0-JUC简介
Java JUC 简介 在 Java 5.0 提供了 java.util.concurrent (简称 JUC )包,在此包中增加了在并发编程中很常用 的实用工具类,用于定义类似于线程的自定义子 ...
- 腾讯云服务器centos7.2+nginx(开启gzip压缩)+uwsgi+Django+react
因为项目原因,学习了react,Django,完成react开发项目过后,打包(做好了代码分割.压缩)放入Django中,在本地运行速度很快,结果放到服务器中,虽然某些js文件很小(只有一百多kb), ...
- 使用composer安装Larave提示“Changed current directory to C:/Users/Administrator/AppData/Roaming/Composer”
解决办法: 根据官方手册执行composer global require "laravel/installer" 显示Changed current directory to C ...
- vscode源码分析【四】程序启动的逻辑,最初创建的服务
第一篇: vscode源码分析[一]从源码运行vscode 第二篇:vscode源码分析[二]程序的启动逻辑,第一个窗口是如何创建的 第三篇:vscode源码分析[三]程序的启动逻辑,性能问题的追踪 ...
- js函数只执行一次,函数重写,变量控制与闭包三种做法
一.情景需求 调用后台接口需要附带token信息,那么在每个请求的头部添加token的做法就不太优雅了:一个网站请求100次,那就得写添加100次token,假设某天接口有所变动,改起来就十分麻烦了. ...
- 使用zabbix监控linux的io
zabbix自带的监控linux的模板中并没有监控io这项,而实际生产中又需要监控io,如何监控呢. 错误的示例 这里我特意贴出错误的示例出来,是因为我在网上搜如何使用zabbix监控io的文章时,好 ...
- Elasticsearch 6.x版本全文检索学习之倒排索引与分词、Mapping 设置
Beats,Logstash负责数据收集与处理.相当于ETL(Extract Transform Load).Elasticsearch负责数据存储.查询.分析.Kibana负责数据探索与可视化分析. ...
- org.springframework.util.Base64Utils线程安全问题
Spring提供的org.springframework.util.Base64Utils类,先会检测JDK里是否自带java.util.Base64,如果不带,则使用的是apache提供的org.a ...
- \" 转义字符, \a系统警报,逐字字符串(verbatim string)
string str="The key factors are \"focus\" and \"perseverance\""; strin ...