# 一 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...)的更多相关文章

  1. Python学习(八) —— 内置函数和匿名函数

    一.递归函数 定义:在一个函数里调用这个函数本身 递归的最大深度:997 def func(n): print(n) n += 1 func(n) func(1) 测试递归最大深度 import sy ...

  2. python基础12_匿名_内置函数

    一个二分查找的示例: # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, ...

  3. 【python】dir(__builtins__)查看python中所用BIF(内置函数)

    dir(__builtins__)查看python中所用BIF(内置函数)

  4. 查看python内部模块命令,内置函数,查看python已经安装的模块命令

    查看python内部模块命令,内置函数,查看python已经安装的模块命令 可以用dir(modules) 或者用 pip list或者用 help('modules') 或者用 python -m  ...

  5. [Python学习笔记-001] 内置函数getattr()

    如果某个实例foo有多个方法, 当对foo的每一个方法我们都需要使用try ... except ...进行包装的时候,内置函数getattr()可以用来精简代码. 1. getattr()的用法 # ...

  6. python入门(二):isinstance、内置函数、常用运算等

    1.    isinstance(变量名,类型)                           #判断什么类型 ps: 只支持输入两个参数,输入3个参数会报错 >>> isin ...

  7. Python 面向对象 (补充) , 反射 , 内置函数

    面向对象中内置函数 issubclass方法: 检查第一个参数是否是第二个参数的子子孙孙类     返回  :   是一个布尔值 class Base(object): pass class Foo( ...

  8. [Python笔记]第四篇:内置函数

    本篇主要内容:内置函数 函数 参考:https://docs.python.org/3.5/library/functions.html 内置函数列表 一.数学运算类 abs(x)求绝对值 >& ...

  9. python补充最常见的内置函数

    最常见的内置函数是: print("Hello World!") 数学运算 abs(-5)                         # 取绝对值,也就是5 round(2. ...

随机推荐

  1. 【CF1042D】Petya and Array 离散化+树状数组

    题目大意:给定一个长度为 N 的序列,给定常数 t,求有多少个区间 [l,r] 满足 \(\sum\limits_{i=l}^{r}a_i<t\). 题解:先跑一边前缀和,问题等价于求有多少个数 ...

  2. 终于解决了用JAVA写窗口程序在不同的windows界面下的显示保持一致。

    好像是两三年前的时候发现这个问题. 由于在windows经典界面与windows xp界面下,窗口的标题栏的高度是不一样的. 所以我们在用Java写GUI程序的时候,会遇到一个问题. 当我把一个JFr ...

  3. React之Perf

    import Perf from 'react-addons-perf' // ES6语法 var Perf = require('react-addons-perf') // ES5语法针对node ...

  4. Summary of Java basics review data

    1.标识符      用于命名程序的对象,如方法名,变量名,规则是: a.大小写敏感 b.由英文字符,文字字符,美元符号,下划线和数字组成,但不能以数字开头 c.不能是关键字 2.%:求余运算符    ...

  5. IO处理要注意的事:关闭资源!关闭资源!关闭资源!

    案例1: 现象: 同事做本地txt数据切分然后处理,发现删除本地临时文件目录中的文件时,有时成功,有时删除完了发现文件还在.代码各处都不报错,且各种日志打印正常. 解决: 最后发现,是业务逻辑代码中有 ...

  6. java参数可变方法

    java中允许一个方法中存在多个参数 public class Parmvarexmple { //参数可变的方法 public int sum(int...n) { int tempSum=0; f ...

  7. Android app:transformNativeLibsWithStripDebugSymbolForDebug错误分析

    升级NDK解决问题: 先清除 Android/Sdk/ndk-bundle/ 下的内容从 https://developer.android.google.cn/ndk/downloads/older ...

  8. Shiro简介(一)

    1.shiro是一个安全验证框架,可以完成认证.授权.加密.会话管理.与Web集成.缓存等.   Authentication:身份认证/登入 Authorization:权限验证.粗粒度权限指对某一 ...

  9. pt-online-schema-change 测试使用-包含生成测试数据

    pt-online-schema-change 测试使用-包含生成测试数据 # 参考网址: https://www.2cto.com/database/201703/618280.html 一.简要描 ...

  10. Uart串口

    title: Uart串口 tags: ARM date: 2018-10-20 16:38:28 --- Uart串口 和单片机的应用没什么区别,首先设置IO复用,设置波特率和数据位,以及中断相关的 ...