一.isinstance和issubclass

1.isinstance

class Animal:
def eat(self):
print('刚睡醒吃点儿东西') class Cat(Animal):
def play(self):
print('猫喜欢玩儿') c = Cat() print(isinstance(c, Cat)) # c是一只猫
print(isinstance(c, Animal)) # 向上判断 c是一只动物

2.issubclass

 class Animal:
def eat(self):
print('刚睡醒吃点儿东西') class Cat(Animal):
def play(self):
print('猫喜欢玩儿') c = Cat()
print(issubclass(Cat, Animal)) # 判断Cat类是否是Animal类的子类
print(issubclass(Animal, Cat)) # 判断Animal类是否是Cat类的子类

二.区分方法和函数

官方玩法

 from types import FunctionType,MethodType  # 方法和函数  FunctionType 函数类型 MethodType 方法类型
from collections import Iterable, Iterator # 迭代器 class Person:
def chi(self): # 实例方法
print('我要吃鱼') @classmethod
def he(cls):
print('我是类方法') @staticmethod
def pi():
print('你是真的皮') p =Person() print(isinstance(Person.chi, FunctionType)) # True
print(isinstance(p.chi, MethodType)) # True print(isinstance(p.he, MethodType)) # True
print(isinstance(Person.he, MethodType)) # True print(isinstance(p.pi, FunctionType)) # True
print(isinstance(Person.pi, FunctionType)) # True

野路子

打印的结果中包含了function. 函数
method. 方法
 def func():
print('我是函数') class Foo:
def chi(self):
print('我是吃') print(func) #<function func at 0x0000024817BF1E18>
f = Foo()
f.chi()
print(f.chi) # <bound method Foo.chi of <__main__.Foo object at 0x0000024817DCC358>>

三.反射

 class Preson:
def __init__(self, name, laopo):
self.name = name
self.laopo = laopo p = Preson('宝宝', '林志玲') print(hasattr(p, 'laopo')) # p这个对象中是否有老婆这个属性
print(getattr(p, 'laopo')) # p.laopo 获取p这个对象中的老婆属性 # 设置一个对象属性若存在就修改 不存在就添加到这个对象中
setattr(p, 'laopo', '胡一菲') # p.laopo = 胡一菲
setattr(p, 'money', 10000000) # p.money = 10000000 print(p.laopo)
print(p.money) # delattr(p, 'laopo') # 把对象中的xxx属性移除 != p.laopo = None
print(p.laopo) #'Preson' object has no attribute 'laopo' 已经移除了对象中的laopo属性所以报错

python isinstance和issubclass,区分方法和函数,反射的更多相关文章

  1. Python 区分方法和函数

    def func(): print("我是函数") class Foo: def chi(self): print("我是吃") # print(func) # ...

  2. day 25 方法和函数 反射

    特殊成员的补充: # __str__ class Foo(object): def __init__(self): pass def func(self): pass def __str__(self ...

  3. isinstance,issubclass,内置函数__str__和__repr__,__format__,dir()函数

    isinstance(obj,cls) 检查是否obj是否是类 cls 的对象 #对象与类之间的关系 判断第一个参数是否是第二个参数的实例 # 身份运算 # 2 == 3 # 值是否相等# 2 is ...

  4. day26 Python isinstance和issubclass

    isinstance(obj,cls)检查是否obj是否是类 cls 的对象 issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object) ...

  5. Python学习笔记——常用的内置函数

    一.yield def EricReadlines(): seek = 0 while True: with open('D:/temp.txt','r') as f: f.seek(seek) da ...

  6. python字符串内容替换的方法(转载)

    python字符串内容替换的方法 时间:2016-03-10 06:30:46来源:网络 导读:python字符串内容替换的方法,包括单个字符替换,使用re正则匹配进行字符串模式查找与替换的方法.   ...

  7. python基础之 反射,md5加密 以及isinstance, type, issubclass内置方法的运用

    内容梗概: 1. isinstance, type, issubclass 2. 区分函数和方法 3. 反射(重点) 4. md5加密 1. isinstance, type, issubclass1 ...

  8. python基础语法17 面向对象4 多态,抽象类,鸭子类型,绑定方法classmethod与staticmethod,isinstance与issubclass,反射

    多态 1.什么是多态? 多态指的是同一种类型的事物,不同的形态. 2.多态的目的: “多态” 也称之为 “多态性”,目的是为了 在不知道对象具体类型的情况下,统一对象调用方法的规范(比如:名字). 多 ...

  9. 方法和函数,isinstance/issubclass/type以及反射

    一丶,isinstance/issubclass/type 1.issubclass检查第一个参数是否是第二个参数的 子子孙孙类 class Foo(): pass class Boo(Foo): p ...

随机推荐

  1. TZ_06_SpringMVC_常用注解

    1. @Controller@RequestMapping(path = "/user")//一级目录 public class FormSubmit { @RequestMapp ...

  2. 前端插件--swipe.js

    swipe.js的作用: 这是一个轻量级的移动滑动组件,支持触摸移动,支持响应式页面. 效果图: 代码: <!DOCTYPE html> <html lang="en&qu ...

  3. web前端学习(四)JavaScript学习笔记部分(6)-- js内置对象

    1.JS内置对象-什么是对象 1.1.什么是对象: JavaScript中的所有事物都是对象:字符串.数值.数组.函数 每个对象带有属性和方法 JavaScript允许自定义对象 1.2.自定义对象: ...

  4. 10分钟完成 mongodb replSet 部署

    开始: ------------------------------------------------------------------------------------------------ ...

  5. Eclipse 出现select type (? = any character,*= any String,Tz=TimeZone)

    在eclipse中想运行project的时候,往往是右键项目名称---->run As --->Java Application 但是会弹出窗口显示select type (? = any ...

  6. GIT → 00:GIT学习大纲

    1. 学习版本控制的原因 1.1 没有版本控制出现的问题 1.2 版本控制的简介 1.3 版本控制工具 2. Git 和 Svn 比较 2.1 SVN介绍 2.1.1 SVN简介 2.1.2 SVN基 ...

  7. Spring Boot Redis 集成配置(转)

    Spring Boot Redis 集成配置 .embody{ padding:10px 10px 10px; margin:0 -20px; border-bottom:solid 1px #ede ...

  8. 删除 java代码中所有的注释

    删除 java代码中所有的注释.java public class CleanCommons { private static Pattern pattern = Pattern.compile(&q ...

  9. 依赖注入的方式(DI)

    方式: 接口注入: setter方法注入: 构造方法注入: 接口注入: public class ClassA { private InterfaceB clzB; public void doSom ...

  10. TP3.2.x判断手机端访问并设置默认访问模块的方法 - ThinkPHP框架

    手机端访问时调用Wap手机模块,实现在手机端访问时展示出手机网站,无需跳转域名首先我们在./Application/Common/Conf/ 目录下建立两个公共配置文件:config.php 和con ...