python---issubclass/type/isinstance/ 反射(内置函数getattr/delattr...)
# 一 python面向对象-内置函数(issubclass(), type(), isinstance())
# issubclass 判断xxxx类是否是xxxx类的子类
class egg:
pass
class eegg(egg):
pass
class yuneegg(eegg):
pass dan = egg()
edan = eegg()
shouyunedan = yuneegg() print(issubclass(eegg, egg)) # True 鹅蛋继承蛋的属性,是子类
print(issubclass(yuneegg,egg)) # True .受孕鹅蛋也是蛋的子类,都都蛋蛋
print(issubclass(eegg, yuneegg)) # False 鹅蛋也有没受孕的 # type 给出xxx的数据类型. 给出创建这个对象的类
print(type(dan) and type(edan)) # False 返回创建他的类,不找子类或者父类,只找创造的类 # isinstance 判断xxx对象是否是xxx类型的 判断是不是一个类的体系,只找直系向上的,不找分支和子类
print(isinstance(dan, egg)) # True ,有蛋创建的
print(isinstance(edan,egg)) # True ,鹅蛋也是单,是他的子类
print(isinstance(shouyunedan, egg)) # TRUE受孕鹅蛋还是蛋,可以找祖宗
print(isinstance(dan, eegg)) # FALSE 蛋不一定是鹅蛋,也许是鸭蛋 # 二 2. 如何分辨方法和函数.
# 在类外面定义的函数一定是函数
# 在类中:
# 1. 实例方法: 如果是对象访问.方法,, 如果是类名访问是函数
# 2. 静态方法: 都是函数
# 3. 类方法: 都是方法
# 如果想要用程序来判断. 需要引入两个模块
# from types import FunctionType, MethodType
# isinstance()
from types import FunctionType,MethodType
class Animal:
def __init__(self, kemu, xueming):
self.kemu = kemu
self.xueming = xueming
def add(self):
return self.kemu + self. xueming
tiger = Animal("cat", "oldhu") print(isinstance(tiger.add, FunctionType))
print(isinstance(tiger.add, MethodType)) # 三
# 反射(重点)
# 仅限于内存层面(函数执行不改变源文件,只修改内存加载的信息)
# 重点:
# hasattr(obj, str)判断对象中是否包含了xxx(str)
import handler
a = hasattr(handler, "Base") #存在True, 不存在FALSE
b = hasattr(handler, "ali") #False
print(a)
print(b) # getattr(obj, str)从对象中获取xxxx(str)
c = getattr(handler, "Base") # 存在返回Base变量
# qita = getattr(handler, "aad")# 不能存在报错
c() # 次重点:
# setattr(obj, str, value) 给对象设置xxxx(str)属性值(value)
setattr(handler, "t", 12) # 不存在执行新增,存在执行修改变量t
print(handler.t) # delattr(obj, str)从对象中删除xxxxx(str) 信息
delattr(handler,"t") # 删除变量t
delattr(handler,"xxx") # 不存在报错
print(handler.t)
python---issubclass/type/isinstance/ 反射(内置函数getattr/delattr...)的更多相关文章
- Python学习(八) —— 内置函数和匿名函数
一.递归函数 定义:在一个函数里调用这个函数本身 递归的最大深度:997 def func(n): print(n) n += 1 func(n) func(1) 测试递归最大深度 import sy ...
- python基础12_匿名_内置函数
一个二分查找的示例: # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, ...
- 【python】dir(__builtins__)查看python中所用BIF(内置函数)
dir(__builtins__)查看python中所用BIF(内置函数)
- 查看python内部模块命令,内置函数,查看python已经安装的模块命令
查看python内部模块命令,内置函数,查看python已经安装的模块命令 可以用dir(modules) 或者用 pip list或者用 help('modules') 或者用 python -m ...
- [Python学习笔记-001] 内置函数getattr()
如果某个实例foo有多个方法, 当对foo的每一个方法我们都需要使用try ... except ...进行包装的时候,内置函数getattr()可以用来精简代码. 1. getattr()的用法 # ...
- python入门(二):isinstance、内置函数、常用运算等
1. isinstance(变量名,类型) #判断什么类型 ps: 只支持输入两个参数,输入3个参数会报错 >>> isin ...
- Python 面向对象 (补充) , 反射 , 内置函数
面向对象中内置函数 issubclass方法: 检查第一个参数是否是第二个参数的子子孙孙类 返回 : 是一个布尔值 class Base(object): pass class Foo( ...
- [Python笔记]第四篇:内置函数
本篇主要内容:内置函数 函数 参考:https://docs.python.org/3.5/library/functions.html 内置函数列表 一.数学运算类 abs(x)求绝对值 >& ...
- python补充最常见的内置函数
最常见的内置函数是: print("Hello World!") 数学运算 abs(-5) # 取绝对值,也就是5 round(2. ...
随机推荐
- 【洛谷P4318】完全平方数
题目大意:求第 K 个无平方因子数. 题解:第 k 小/大的问题一般采用二分的方式,通过判定从 1 到当前数中满足某一条件的数有多少个来进行对上下边界的转移. 考虑莫比乌斯函数的定义,根据函数值将整数 ...
- 第十五篇-EditText做简单的登录框
TextView和EditText的简单应用. MainActivity.java package com.example.aimee.edittexttest; import android.sup ...
- 【译】7. Java反射——私有字段和私有方法
原文地址:http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html =================== ...
- Hibernate 二(一级缓存,多表设计之一对多)
1 对象状态与一级缓存 1.1 状态介绍 l hibernate 规定三种状态:瞬时态.持久态.脱管态 l 状态 瞬时态:transient,session没有缓存对象,数据库也没 ...
- C sockets Errno
在Windows下进行网络编程,免不了出现各种错误.在Linux下可以使用errno查看错误,但是根据stackoverflow上说,windows下应该使用: FormatMessage() WSA ...
- JS学习笔记Day4
一.什么是函数 将反复使用的功能代码,封装成一独立的模块,这个模块叫做函数 二.封装函数的好处 1.一次封装,多次使用 2.使程序可控 三.函数的分类:内置()函数和自定义函数 四.函数的数据类型(f ...
- 关于串session
关于session: 最近在用IE浏览器调试不同用户所拥有的权限功能,出现了串session.串session,主要的流程结构如下: 解决方法: 在IE快捷方式上点击鼠标右键>属性>快捷方 ...
- java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)
我们以ByteArrayInputStream,拉开对字节类型的“输入流”的学习序幕.本章,我们会先对ByteArrayInputStream进行介绍,然后深入了解一下它的源码,最后通过示例来掌握它的 ...
- 【转】第8章 前摄器(Proactor):用于为异步事件多路分离和分派处理器的对象行为模式
目录: Reactor(反应堆)和Proactor(前摄器) <I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor> <[转]第8章 前摄器(Proa ...
- 【1】【leetcode-93】复原IP地址
(不会,典型) 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135 ...