1.反射

  四个方法:getattr()  获取

class Person():
def __init__(self,name,age):
self.name = name
self.age = age p = Person('wdc',22) a = getattr(p,'name') #获取对象p的字符串为“name”的方法
print(a)

       hasattr()  判断

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

       setattr()  赋值

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

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

       delattr()  删除

class Person():
def __init__(self,name,age):
self.name = name
self.age = age p = Person('wdc',22)
print(p.age)
delattr(p,'age') #删除对象p的名字叫做“age ”的方法
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. 如何优雅的处理 async/await 异常

    参考链接:https://cloud.tencent.com/developer/article/1470715 参考链接:https://www.jianshu.com/p/2935c0330dd2

  2. Image Perimeters

    Description 给出一张由"x"和"."组成的矩阵.每个"x"可以向上下左右及两个斜对角进行连通,请问由某个点开始的"x& ...

  3. kafka那些事儿

    1 为什么用消息队列 1)解耦.服务之间没有强依赖,不需要关心调用服务时出现的各种异常,服务挂掉后接口超时等问题 2)异步.解决接口调用多服务时延时高的问题 3)高峰期服务间缓冲.解决工作节奏不一致问 ...

  4. .NET Core IOC AOP

    IOC简介 IOC思想 把类当做组件或服务来看待,组件内一定要高内聚,组件之间一定要低耦合,既然要保持低耦合,那就一定不要轻易的去new什么对象. 那组件之间的交互怎么处理呢?那最好的方式就是把new ...

  5. Redis搭建Windows平台

    安装程序下载 从官网下载安装程序. https://redis.io/download https://github.com/MicrosoftArchive/redis/releases 新地址:h ...

  6. Git master合并分支时提示“Already up-to-date”

    Git master合并分支时提示"Already up-to-date" ​ 在使用Git把当前分支合并到master提示"Already up-to-date&quo ...

  7. Django模板语言中的Filters的使用方法

    Filters可以称为过滤器.下面我们简单介绍是如何使用他的. Filters的语法: {{ value|filter_name:参数 }} Django大概提供了六十个内置过滤器,下面我们简单介绍几 ...

  8. python第三天---列表的魔法

    # list 列表 # 中括号括起来,逗号分隔每个元素, # 列表中可以是数字字符串.列表等都可以放进去 list1 = [123, "book", "手动", ...

  9. Hadoop 完全分布式搭建

    搭建环境 https://www.cnblogs.com/YuanWeiBlogger/p/11456623.html 修改主机名------------------- 1./etc/hostname ...

  10. docker安装及基本使用

    docker分为docker CE 和docker EE,CE即免费社区版,EE即企业付费版.下面基于centos7安装docker CE,其它linux版本可以参考官方文档https://docs. ...