1. """
  2. 类的装饰器:
  3. @property
  4. 当类的函数属性声明 @property后, 函数属性不需要加括号 即可调用
  5. @staticmethod
  6. 当类的函数属性声明 @staticmethod后, 把函数属性声明为静态属性, 不能直接访问类属性与实例属性
  7. @classmethod
  8. 当函数属性声明 @classmethod后,把函数属性声明为类属性,不能直接访问实例属性,类可以直接调用
  9.  
  10. """
  11. class A():
  12. q = "清华大学"
  13. def __init__(self):
  14. self.name = "不忘初心,方缘继续努力ing"
  15. self.oh = 666
  16. @property
  17. def add(self):
  18. print(self.name)
  19. return 1+1
  20.  
  21. @staticmethod
  22. def result(para):
  23. # para()是一个对象
  24. print(para().add) # 函数属性声明为静态属性时,不能直接访问类属性和实例属性
  25. print(para.add)
  26. return 3*3
  27.  
  28. @classmethod
  29. def clas(cls):
  30. # print(cls.oh) # 函数属性声明为类属性时,不能直接访问实例对象,但可以访问类属性
  31. print(cls.q) # q为类A的静态属性
  32. # 调试程序
  33. if __name__ == "__main__":
  34. # 创建类A的对象(实例)data
  35. data = A()
  36. # 参数A是一个类
  37. A.result(A)
  38. # 函数属性不用加括号
  39. print(data.add)
  40. data.clas()
  41.  
  42. # 打印对象的属性字典
  43. 对象 = A()
  44. print(对象.__dict__)
  1. """
  2. 反射:
  3. hasattr(obj, str) 返回布尔值, 当str存在于 obj时,返回true, 否则返回false
  4. getattr(obj, str) 返回str的内存地址
  5. """
  6. class He():
  7. # pass
  8. def interface(self,user,passwd):
  9. if user == "belief" and passwd == "123":
  10. return 1 # 等效于return True
  11. else:
  12. error = "账号或密码错误!!!"
  13. return error
  14.  
  15. class I():
  16. def login(self):
  17. if hasattr(He,"interface"):
  18. user = input("用户名>>>:")
  19. passwd = input("密码>>>:")
  20. func = getattr(He,"interface")
  21. data = func(self,user,passwd)
  22. if data == 1: # 等效于if data == True
  23. print("这是一个完美的登陆界面!!!")
  24. else:
  25. print(data)
  26. else:
  27. print("他去旅游了,还没回来敲代码!!!")
  28.  
  29. def index(self):
  30. print("登陆成功后执行我")
  31.  
  32. if __name__ == "__main__":
  33. i = I()
  34. i.login()

  

day8_类的装饰器和反射的更多相关文章

  1. python描述符(descriptor)、属性(property)、函数(类)装饰器(decorator )原理实例详解

     1.前言 Python的描述符是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和心得记录下来,也为正在为了该问题 ...

  2. 11.python描述符---类的装饰器---@property

    描述符1.描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()这三个内置方法中的一个,描述符也被称为描述符协议(1):__ ...

  3. Python之路(第二十八篇) 面向对象进阶:类的装饰器、元类

    一.类的装饰器 类作为一个对象,也可以被装饰. 例子 def wrap(obj): print("装饰器-----") obj.x = 1 obj.y = 3 obj.z = 5 ...

  4. python使用类作为装饰器

    1.普通就是一个函数作为装饰器,也可以用类名作为装饰器. 因为类和函数都是callable的,都可以使用括号来调用运行他. 2.上上篇的缓存一段时间的还是函数作为装饰器,类只是充当了比模块更下一级的命 ...

  5. Python全栈day28(类的装饰器)

    类是一个对象也可以像函数一样加装饰器 类的装饰器.py def deco(obj): print('======',obj) obj.x=1 obj.y=2 obj.z=3 return obj # ...

  6. python 类的装饰器

    我们知道,在不改变原有代码的基础上,我们可以使用装饰器为函数添加新的功能.同理,一切皆对象,我们也可以使用装饰器为类添加类属性.what? def deco(obj): obj.x = 1 obj.y ...

  7. day28-描述符应用与类的装饰器

    #!/usr/bin/env python# -*- coding:utf-8 -*-# ------------------------------------------------------- ...

  8. Python学习第十九课——类的装饰器

    类的装饰器 # def deco(func): # print('==========') # return func # # # @deco #test=deco(test) # # def tes ...

  9. 第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法

    第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法 上节介绍了Python中类的静态方法,本节将结合案例详细说明相关内容. 一.    案例说明 本节定义了类Sta ...

随机推荐

  1. MATLAB实例:对称双随机矩阵

    MATLAB实例:对称双随机矩阵 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 双随机矩阵(doubly stochastic matrix):元素属 ...

  2. JUC-0-JUC简介

    Java JUC  简介   在 Java 5.0 提供了 java.util.concurrent (简称 JUC )包,在此包中增加了在并发编程中很常用 的实用工具类,用于定义类似于线程的自定义子 ...

  3. 腾讯云服务器centos7.2+nginx(开启gzip压缩)+uwsgi+Django+react

    因为项目原因,学习了react,Django,完成react开发项目过后,打包(做好了代码分割.压缩)放入Django中,在本地运行速度很快,结果放到服务器中,虽然某些js文件很小(只有一百多kb), ...

  4. 使用composer安装Larave提示“Changed current directory to C:/Users/Administrator/AppData/Roaming/Composer”

    解决办法: 根据官方手册执行composer global require "laravel/installer" 显示Changed current directory to C ...

  5. vscode源码分析【四】程序启动的逻辑,最初创建的服务

    第一篇: vscode源码分析[一]从源码运行vscode 第二篇:vscode源码分析[二]程序的启动逻辑,第一个窗口是如何创建的 第三篇:vscode源码分析[三]程序的启动逻辑,性能问题的追踪 ...

  6. js函数只执行一次,函数重写,变量控制与闭包三种做法

    一.情景需求 调用后台接口需要附带token信息,那么在每个请求的头部添加token的做法就不太优雅了:一个网站请求100次,那就得写添加100次token,假设某天接口有所变动,改起来就十分麻烦了. ...

  7. 使用zabbix监控linux的io

    zabbix自带的监控linux的模板中并没有监控io这项,而实际生产中又需要监控io,如何监控呢. 错误的示例 这里我特意贴出错误的示例出来,是因为我在网上搜如何使用zabbix监控io的文章时,好 ...

  8. Elasticsearch 6.x版本全文检索学习之倒排索引与分词、Mapping 设置

    Beats,Logstash负责数据收集与处理.相当于ETL(Extract Transform Load).Elasticsearch负责数据存储.查询.分析.Kibana负责数据探索与可视化分析. ...

  9. org.springframework.util.Base64Utils线程安全问题

    Spring提供的org.springframework.util.Base64Utils类,先会检测JDK里是否自带java.util.Base64,如果不带,则使用的是apache提供的org.a ...

  10. \" 转义字符, \a系统警报,逐字字符串(verbatim string)

    string str="The key factors are \"focus\" and \"perseverance\""; strin ...