一.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. Go之路之go语言结构

    Go Hello World 实例 package main //定义了包名,必须在源文件中非注释的第一行指名这个文件属于哪个包,每个Go应用程序都包含一个名为main的包 import " ...

  2. Django项目:CRM(客户关系管理系统)--26--18PerfectCRM实现King_admin搜索关键字

    search_fields = ('name','qq',) 登陆密码设置参考 http://www.cnblogs.com/ujq3/p/8553784.html search_fields = ( ...

  3. 通过gevent实现单线程下的多socket并发

    #通过gevent实现单线程下的多socket并发 服务器 #server side import sys import socket import time import gevent from g ...

  4. 2017年8月9日学习内容存放 #socket通信介绍

    2017年8月9日学习内容存放 #socket通信介绍 ''' OSI七层 应用 表示 会话 传输 网络 ip 数据链路 mac 物理层 网线 http smtp dns ftp ssh snmp i ...

  5. [转]js设计模式—发布订阅模式

    发布—订阅模式又叫观察者模式,它定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知.在javascript开发中,一般用事件模型来替代传统的发布—订阅模式.本文将 ...

  6. python基础--线程、进程

    并发编程: 操作系统:(基于单核研究) 多道技术: 1.空间上的复用 多个程序共用一个计算机 2.时间上的复用 切换+保存状态 例如:洗衣 烧水 做饭 切换: 1.程序遇到IO操作系统会立刻剥夺着CP ...

  7. 【Codeforces Round #430 (Div. 2) C】Ilya And The Tree

    [链接]点击打开链接 [题意] 给你一棵n个点的树,每个点的美丽值定义为根节点到这个点的路径上的所有权值的gcd. 现在,假设对于每一个点,在计算美丽值的时候,你可以将某一个点的权值置为0的话. 问你 ...

  8. selenium(2):环境搭建完成后,初步运行遇到的问题

    检验是否搭建成功. . 问题一:运行时候,报错:请停用以开发者模式运行的扩展程序 出现错误如下: 原因:chromedriver的版本号过低了. 解决办法:应该安装与chrome版本对应的chrome ...

  9. 双系统删除ubuntu

    我的电脑安装了双系统,Windows和Linux,不过由于Linux在最近一段时间内不会使用,所以我打算删除Linux.    删除Linux最需要注意的地方,就是MBR(Master Boot Re ...

  10. jQuery 图片上传

    1. 概述 1.1 说明 在一些前后端不分离的项目中,经常有一些需要把文件或者图片上传的功能,故记录此代码以便后期使用. 1.2 要求 1.上传,10M以内,限bmp,jpg,png,jpeg等图片格 ...