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 面向对象之路 方法和函数 反射的主要内容,如果未能解决你的问题,请参考以下文章

python之路--day23--面向对象高级

Python之路第十二篇:Python面向对象高级

Python全栈之路----面向对象开发----反射

Python之路,Day8 - 面向对象编程进阶

Python之路-python(面向对象进阶)

python之路,day7-面向对象变成