一.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. [Array]1. Two Sum(map和unorder_map)

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  2. 【python之路43】tornado的用法(一)

    一.tonado的代码 1.返回字符串 #!/usr/bin/env python # -*- coding:utf-8 -*- import tornado.ioloop import tornad ...

  3. JS引擎查找属性的原理

    原型继承的原理 不断向上查找 funciton getProperty(obj,prop){ if(obj.hasOwnProperty(prop){ return obj[prop]; }else ...

  4. PHP搜索优化 sphinx 实战

    环境:win7 64 wamp 解压sphinx安装包后,简历如下结构.注意,conf目录是我的配置文件目录 在conf目录下,简历newdefend.conf文件,配置内容如下 # 配置数据源 so ...

  5. Crontab 入门

    参考网址: http://www.centoscn.com/CentOS/help/2014/0820/3524.html 简单命令 service crond restart //重启crontab ...

  6. 在 IE 选项那提示 ”某些设置由系统管理员进行管理” 解决

    运行 regedit 打开注册表 修改注册表值HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Interne ...

  7. Markdown图片

  8. 根据网站运行日志猜测的百度蜘蛛ip

    da大部分文章都是吵来吵去,不准确 所以就不参考那些沙雕的文章了,直接自己统计一个 123.125.71.117 123.125.71.58 220.181.108.115 220.181.108.1 ...

  9. rabbitmq启用和禁用web界面管理插件

    rabbitmq默认安装启动以后,是没有开启web管理界面的,通过rabbitmq-plugins list命令可列出插件的启用和禁用状态. 使用rabbitmq-plugins enable xxx ...

  10. 初探element+vue+vue-router

    基本步骤先准备好 npm install -g vue-cli npm init webpack cnpm i element-ui -S 修改/src/main.js // The Vue buil ...