1.反射

  四个方法:getattr()  获取

  1. class Person():
  2. def __init__(self,name,age):
  3. self.name = name
  4. self.age = age
  5.  
  6. p = Person('wdc',22)
  7.  
  8. a = getattr(p,'name') #获取对象p的字符串为“name”的方法
  9. print(a)

       hasattr()  判断

  1. class Person():
  2. def __init__(self,name,age):
  3. self.name = name
  4. self.age = age
  5.  
  6. p = Person('wdc',22)
  7. if hasattr(p,'name'): #反射:判断对象p中是否有字符串为“name”的方法。
  8. print('有')
  9. else:
  10. print('没有')

       setattr()  赋值

  1. class Person():
  2. def __init__(self,name,age):
  3. self.name = name
  4. self.age = age
  5.  
  6. p = Person('wdc',22)
  7. setattr(p,'sex','Female') #给对象p创建一个为“sex”的属性,并赋值为“Female”
  8. print(p.sex)

  1. class Person():
  2. def __init__(self,name,age):
  3. self.name = name
  4. self.age = age
  5.  
  6. def talk(self):
  7. print('{} is speaking ...'.format(self.name))
  8.  
  9. p = Person('wdc',22)
  10. # 给类绑定一个新的方法
  11. setattr(Person,'speak',talk) #为类Person添加名字为“speak”的方法,并把函数talk赋值给speak方法
  12. p.speak()

       delattr()  删除

  1. class Person():
  2. def __init__(self,name,age):
  3. self.name = name
  4. self.age = age
  5.  
  6. p = Person('wdc',22)
  7. print(p.age)
  8. delattr(p,'age') #删除对象p的名字叫做“age ”的方法
  9. print(p.age)

python_面向对象——反射的更多相关文章

  1. Python之面向对象反射

    Python之面向对象反射 isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 class Foo(object): 2 pass 3 4 obj = Foo() 5 6 ...

  2. day26.面向对象-反射封装内置方法

    封装 隐藏对象的属性和实现细节,近对外提供公共访问方式 广义:代码保护,面向对象思想 狭义:将属性,方法隐藏起来 class Person: __key = 123456 # 私有的静态属性 def ...

  3. python -- 面向对象 - 反射

    1.isinstance ,type, issubclass       isinstance:判断给的对象是否是**类型       type:返回**对象的数据类型       issubclas ...

  4. 面向对象 反射 和item系列和内置函数和__getattr__和__setattr__

    反射 反射主要用在网络编程中, python面向对象的反射:通过字符串的形式操作对象相关的属性.python的一切事物都是对象. 反射就是通过字符串的形式,导入模块:通过字符串的形式,去模块寻找指定函 ...

  5. python_面向对象魔法方法指南

    原文: http://www.rafekettler.com/magicmethods.html 原作者: Rafe Kettler 翻译: hit9 原版(英文版) Repo: https://gi ...

  6. Python之面向对象-反射

    一.什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问,检测和修改它本省状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被 ...

  7. python全栈开发从入门到放弃之面向对象反射

    1.classmethod.staticmethod方法 classmethod类方法默认参数cls,可以直接用类名调用,可以与类属性交互 #student文件内容 宝宝,男 博博,女 海娇,男 海燕 ...

  8. python_基于反射模拟Web框架路由系统

    根据用户输入的内容,导入模块 #根据用户输入的内容,导入模块 inp = input("请输入模块名: ") print(inp,type(inp)) dd = __import_ ...

  9. python_面向对象进阶(7)

    第1章 面向对象特性—继承(补充) 1.1 接口类.抽象类介绍 1.2 接口类 1.3 接口类应用过程 1.3.1 第一版:完成多种支付方式接口 1.3.2 第二版: 归一化设计,统一支付方式 1.3 ...

随机推荐

  1. 通过调用Windows本地RPC服务器bypass UAC

    备战一个月比赛,导致近期都没啥时间更新博客,正好今天看到一篇通过调用本地RPC服务的文章,觉得非常有意思,就拿来充充博客. 在1.0版本的APPINFO.DLL中的RPC服务调用接口ID为:201ef ...

  2. LeetCode 792. 匹配子序列的单词数(Number of Matching Subsequences)

    792. 匹配子序列的单词数 792. Number of Matching Subsequences 相似题目 392. 判断子序列

  3. log4j向指定文件输出日志

    一.log4j.properties中的配置 log4j.logger.cache=INFO,ERROR,batchFile log4j.addivity.batchFile=false log4j. ...

  4. Tp5.1 管理后台开发纪要

    1. tp5.1 对网页是有缓存机制的 E:\phpStudy\PHPTutorial\WWW\NewAdmin\thinkphp\library\think\Template.php 下displa ...

  5. on duplicate key mysql插入更新

    insert into `test` (`job_id`, `user_name`, `total_time`) values ('12345', 'zhangsan', '10') on dupli ...

  6. maven配置阿里镜像

    在conf\settings.xml 在<mirrors>里面添加   <mirror>    <id>nexus-aliyun</id>    < ...

  7. vmware vSphere Data Protection 6.1 --------1-部署

    一.简介 1.vdp的介绍 介绍可以参考:vmware vSphere Data Protection简述(未完成) 官方中文文档:https://docs.vmware.com/cn/VMware- ...

  8. windows下安装phpredis扩展

    根据phpyinfo获取自己的php信息 x86,php5.6,TS,VC11 在pecl网站上找到对应的版本 5.6 Thread Safe (TS) x86 https://pecl.php.ne ...

  9. <a>的javascript+jquery编程实例之删除(定位节点与事件绑定)

    相关jquery方法 parent(), remove() //上传图片 article_create.js article_edit.js function uploadAttachment() { ...

  10. C# 泛型集合排序

    Student sModel = new Student(); List<Student > list = new List<Student >(); list= list.O ...