python 面向对象之路 方法和函数 反射
Posted 帆总、欧巴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 面向对象之路 方法和函数 反射相关的知识,希望对你有一定的参考价值。
一.
isinstance(检查第一个参数是否是第二个参数的 子子孙孙类)
class Base(object): pass class Foo(Base): pass obj1 = Foo() print(isinstance(obj1,Foo))
print(isinstance(obj1,Base))
issubclass(检查的一个参数(对象) 是否是第二个参数(类及父类)的实例)
class Base(object): pass class Foo(Base): pass class Bar(Foo): pass print(issubclass(Bar, Base))
type(获取当前对象是由那个类创建.)
class Foo(object): pass obj = Foo() print(obj,type(obj)) # 获取当前对象是由那个类创建。 if type(obj) == Foo: print(‘obj是Foo类型‘)
二.方法和函数
称谓:
类. 就是方法
外面的, 就是函数
对象.dag 就是方法
类.aaa 就是函数
xxx 也是函数
打印查看:
function
method
from types import MethodType,FunctionType def check(arg): if isinstance(arg,MethodType): print(‘arg是方法‘) elif isinstance(arg,FunctionType): #检查arg是方法还是函数 print(‘arg是个函数‘) else: print(‘不知道是什么‘)
三.反射
getattr # 根据字符串的形式,去对象中找成员。
hasattr # 根据字符串的形式,去判断对象中是否有成员。 setattr # 根据字符串的形式,动态的设置一个成员(内存) delattr # 根据字符串的形式,动态的删除一个成员(内存)
总结:
v = getattr(obj,‘func‘) 根据字符串为参数(第二个参数),去对象(第一个参数)中寻找与之同名的成员。
拓展:见过的啥后面加() ?
类()
对象()
函数()
方法()
以上都可以被调用
示例
def func(): pass
class Foo(object): def __call__(self, *args, **kwargs): pass def func(self): pass
obj = Foo() print(callable(func)) print(callable(Foo)) print(callable(obj)) print(callable(obj.func))
以上是关于python 面向对象之路 方法和函数 反射的主要内容,如果未能解决你的问题,请参考以下文章