一.
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): passobj = Foo() print(callable(func)) print(callable(Foo)) print(callable(obj)) print(callable(obj.func))
原文地址:https://www.cnblogs.com/SUIFAN/p/9562470.html
时间: 2024-10-15 22:15:18