python基础-类的反射
1)反射是通过字符串方式映射内存中的对象。
python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,
改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。
注意:类的反射不能使用类的私有方法
# -*- coding:utf-8 -*-
__author__ = 'shisanjun' class Foo(object):
def __init__(self):
self.name="s" def func(self):
return 'func' obj=Foo()
#检查是否含有成员
print("----是否有成员-----")
print(hasattr(obj,"name"))
print(hasattr(obj,"func")) #获取成员
print("----获取成员-----")
print(getattr(obj,"name"))
print(getattr(obj,"func")()) #getattr(obj,"func")实例的func的内存地址 #设置成员
print("----设置成员-----")
def show(num):
return num+1
setattr(obj,"age",18)
setattr(obj,"show",3)
print(getattr(obj,"age"))
print(getattr(obj,"show")) delattr(obj,"age")
delattr(obj,'show')
print("----是否有成员-----")
print(hasattr(obj,"age"))
print(hasattr(obj,"show")) """
----是否有成员-----
True
True
----获取成员-----
s
func
----设置成员-----
18
3
----是否有成员-----
False
False
"""
2)其他方法访问类的成员
class Foo(object):
def __init__(self):
self.name = 'alex'
def func(self):
return 'func'
# 不允许使用 obj.name
obj = Foo()
print obj.__dict__['name']
python基础-类的反射的更多相关文章
- python基础——类和实例
python基础——类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都 ...
- Python基础-类
Python基础-类 @(Python)[python, python基础] 写在前面 如非特别说明,下文均基于Python3 摘要 本文重点讲述如何创建和使用Python类,绑定方法与非绑定方法的区 ...
- python基础——类名称空间与对象(实例)名称空间
python基础--类名称空间与对象(实例)名称空间 1 类名称空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类的良好总属性:数据属性和函数属性 其中类 ...
- Python菜鸟之路:Python基础-类(1)——概念
什么是类? 在python中,把具有相同属性和方法的对象归为一个类(class).类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化.类不代表具体的事物,而对象表示具体的事物. 类的创建 cla ...
- python(7)– 类的反射
python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删除成员. ...
- Python基础2:反射、装饰器、JSON,接口
一.反射 最近接触到python的反射机制,遂记录下来已巩固.但是,笔者也是粗略的使用了__import__, getattr()函数而已.目前,笔者的理解是,反射可以使用户通过自定义输入来导入响应的 ...
- python基础-----类和实例
在python中,首字母大写的名称指的是类,这个类定义中括号的内容是空的. 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板而实例是根据类创建出来的一个个具体 ...
- python基础——类定义(转)
一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性.如果直接使用类名修改其属性,那么将直接影响到已经实例 ...
- python基础-类的起源
Python中一切事物都是对象. class Foo(object): def __init__(self,name): self.name = name f = Foo("alex&quo ...
随机推荐
- Linux内核分析第八周——进程的切换和系统的一般执行过程
Linux内核分析第八周--进程的切换和系统的一般执行过程 李雪琦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/cou ...
- android studio gradle dependencies 包存放在哪儿?
在AndroidStudio中的"External Libraries"下有引用的library的列表, 选择某个library右键->"Library Prope ...
- PHP 压缩图片质量
$imageFileName = './test2.jpg';$uploadfile_resize = $imageFileName;$pic_width_max = 1000;$pic_height ...
- Tcp协议三次握手四次挥手
一.什么是TCP TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的. 基于IP的传输层协议.TCP在IP报文的协议号是6. 二.什 ...
- SpringMVC 上传文件(文件非必填)MultipartHttpServletRequest
原文:https://blog.csdn.net/dorothy1224/article/details/79136676 上传文件(文件非必填)MultipartHttpServletRequest ...
- Educational Codeforces Round 26 D dp
D. Round Subset time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- 栈(C语言实现)
栈是一种线性数据结构,顺序可能是 LIFO(后进先出)或 FILO(先进先出). 堆栈主要有三个基本操作: 1.push,把元素压入栈 2.pop,从栈中弹出元素(同时从栈中移除),最后加入的第一个被 ...
- python【文件操作:修改文件】
- 利用RAP搭建可视化接口管理平台
环境:CentOS7 jdk:1.7.0_51 redis:3.2.8 mysql:5.6 tomcat:8.0 安装过程: 依赖组件安装: 安装jdk.redis.mysql.tomcat过程省略. ...
- 《xxx重大需求征集系统的》可用性和可修改性战术分析
阅读<大型网站技术架构:核心与案例分析>,第五,六章,结合<河北省重大需求填报系统>,列举实例分析采用的可用性和可修改性战术,将上述内容撰写成一篇1500字左右的博客阐述你的意 ...