反射

1.什么是反射?

反射的概念是有Smith在1982年首次提出的,主要是指程序可以访问、检测和修正它本身状态或行为的一种能力(自省)。

2.以下四个方法可以实现自省

hasattr(object,name)

getattr(object,name,default=None)

setattr(x,y,v)

delattr(x,y)

class Car:
feture = 'big' def __init__(self,name,color):
self.name = name
self.color = color
def get_car(self):
print('this car is %s' %self.name)
def color_car(self):
print('this car is %s ' % self.color) c1 = Car('benchi','red') print(hasattr(c1,'name')) # 查看是否能调用name这个属性
print(getattr(c1,'name')) # 查看调用name后的值 setattr(c1,'size','big') # 修改
print(c1.__dict__) del c1.size # 删除
print(c1.__dict__)

运行结果:

True
benchi
{'name': 'benchi', 'color': 'red', 'size': 'big'}
{'name': 'benchi', 'color': 'red'} Process finished with exit code 0

3.导入动态模块名称

第一种导入方法:

a = __import__('字符串')      

print(a)

例如m1文件夹下的b中的test模块

a = __import__('m1.b')    # 只能定位到m1   .  可以print(a)试一下

a.b.test()

第二种导入方法:

import importlib

a = importlib.import_module('m1.b')       # 直接定位到b   。可以print(a)试一下

m.test

4.补充封装私有

如果导入模块时,假如test前面有_代表私有,隐藏属性。导入时也需要加上_,不然会报错无法访问。

python学习-68 反射的更多相关文章

  1. Python学习 :反射 & 单例模式

    反射 什么是反射? - 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省) 面向对象中的反射 - 通过字符串的形式来操作(获取.检查.增加.删除)对象中的成员 - python中的 ...

  2. 4月17日 python学习总结 反射、object内置方法、元类

    一.反射 下述四个函数是专门用来操作类与对象属性的,如何操作? 通过字符串来操作类与对象的属性,这种操作称为反射 class People: country="China" def ...

  3. Python学习day34-面向对象和网络编程总结

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  4. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  5. Python基础篇【第3篇】: Python异常处理、反射、动态导入、利用反射的web框架

    异常处理 什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常.异常是Python对象,表示一个错误.当P ...

  6. Python学习总结:目录

    Python 3.x总结 Python学习总结[第一篇]:Python简介及入门 Python学习总结[第二篇]:Python数据结构 Python学习总结[第三篇]:Python之函数(自定义函数. ...

  7. python学习之“切片操作从入门到精通”

    在python学习开发的过程中,我们总是不断的要对List(列表),Tuple(元组)有取值操作:假如我们有一个列表List1现在想取出1其中的前5个元素,改怎么操作呢? >>> L ...

  8. java学习之反射机制

    java语言区别于C,C++等准静态语言的最大特点就是java的反射机制.静态语言的最直接定义就是不能在运行时改变程序结构或变量的类型.按照这样的定义,python,ruby是动态语言,C,C++,J ...

  9. Python:Python学习总结

    Python:Python学习总结 背景 PHP的$和->让人输入的手疼(PHP确实非常简洁和强大,适合WEB编程),Ruby的#.@.@@也好不到哪里(OO人员最该学习的一门语言). Pyth ...

随机推荐

  1. webpack的plugin原理

    plugin是webpack生态的重要组成,它为用户提供了一种可以直接访问到webpack编译过程的方式.它可以访问到编译过程触发的所有关键事件. 1. 基本概念 1. 如何实现一个插件 1. plu ...

  2. zabbix显示 get value from agent failed:cannot connetct to xxxx:10050:[4] interrupted system call

    在阿里云上部署的两台云主机,从server上 agent.ping不通agent10050端口,在agent上使用firewalld-cmd 添加了10050端口还不行,关闭了防火墙和selinux也 ...

  3. Tomcat配置二级域名的分配与访问

    回顾tomcat Tomcat是Apache软件基金会(Apache Software Foundation)的一个顶级项目,由Apache, Sun和其他一些公司及个人共同开发,是目前比较流行的We ...

  4. HTML5 Geolocation(地理定位)

    一.背景 在HTML规范中,增加了获取用户地理信息的API,这样使得可以基于用户位置开发互联网应用,即基于位置服务 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的. Inter ...

  5. 洛谷 P2939 [USACO09FEB]改造路Revamping Trails 题解

    P2939 [USACO09FEB]改造路Revamping Trails 题目描述 Farmer John dutifully checks on the cows every day. He tr ...

  6. 微信公众号_Deejo说_2019

    说明: 1. 文中的内容均来自Deejo说微信公众号 2. 微信中搜索"Deejo说"公众号,可关注 麻麻英语 ——2019.09.10—— It’s my treat. 我来请客 ...

  7. ICEM-带柱底座

    原视频下载地址:https://pan.baidu.com/s/1c2KgCBA 密码: ixk8

  8. ldap和phpldapadmin的安装部署

    LDAP 安装 一.安装LDAP 1. 安装包 yum install openssl-devel gcc libtool-ltdl-devel -y yum install openldap-ser ...

  9. if, if/else, if /elif/else,case

    一.if语句用法 if expression then command fi 例子:使用整数比较运算符 read -p "please input a integer:" a if ...

  10. SpringMVC(中)

    一.传值方式 (1)Map Controller @Controller public class MyController { @RequestMapping("first") ...