# 一 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. Java基本类型占用字节数(或 bit数)

    背景:面试时候问到int类型占用几个字节,以及表示的大小,居然一脸懵逼,任何细节都不能放过. Java基本类型占用字节数(或 bit数) java是跨平台的语言,所以不论在什么系统中这些东西在内存中所 ...

  2. bash 3

    1)unset 命令可以删除变量.readonly变量不能删除 2)变量类型 运行shell时,会同时存在三种变量: 1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他sh ...

  3. Codeforces Round #529 (Div. 3) F.Make It Connected

    传送门 题意: 有 n 个顶点,每个顶点有个花费 a[ i ],连接顶点 u,v 需要花费 a[v]+a[u]的代价. 有 m 个特殊边,每条边有三个参数 u,v,w 代表的意思是连接 u,v 的花费 ...

  4. FFT的一种迭代实现

    struct Complex { double x,y; Complex(double x1=0.0 ,double y1=0.0) { x=x1; y=y1; } Complex operator ...

  5. ajax请求封装函数

    写封装函数的套路 1.先写出这个函数原来的基本用法 2.写一个没有形参空函数,将上一步的代码直接作为函数体, 3.根据使用过程中,抽象出来需要变的东西作为形参 function ajax (metho ...

  6. STM32F103 ------ BOOT0 / BOOT1

    BOOT0/BOOT1的状态只是在CPU复位之后的4个周期内,被用作启动的依据,系统启动之后,或是取得了复位向量之后,BOOT0/BOOT1的状态可以任意变化,而不影响CPU的运行. 所以只需要保证在 ...

  7. sys用户的操作

    oracle中查找某个表属于哪个用户? select owner from dba_tables where table_name=upper('t_l_tradelist' )          1 ...

  8. day15-ajax和jquery

    回顾: 分页: 将数据按照页码划分,提高用户的体验度. 分类: 逻辑分页:一次性将内容加载到内存(list),获取自己想要的数据 sublist截取.缺点:维护起来麻烦 物理分页:(经常使用) 每次只 ...

  9. 【强大的Java集成开发工具】MyEclipse 2015 Stable 2.0 for Mac

    [简介] MyEclipse是一款 Mac 上的Java 强大的集成开发工具,今天和大家分享最新的 MyEclipse 2015 Stable 2.0 版本,MyEclipse 2015 基于 Ecl ...

  10. 基础教程:Mac 电脑小白应该了解哪些东西?

    文章素材来源:知乎 文章收录于:风云社区(www.scoee.com),提供1700多款mac软件下载. 本文提供给那些从 PC 阵营初入 Mac 的同学而准备的,我们希望从硬件和软件.设计风格和使用 ...