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):
             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

python 面向对象之路 方法和函数 反射的相关文章

Python 面向对象(二) 特殊方法

一些Python特殊方法的汇总 __bases__              类的基类,返回元祖__base__                类的基类,也叫父类__call__                  '类名()',类名加括号调用时执行的语句__class__               表示当前操作的对象的类是什么__del__                   析构方法,对象在内存中被释放时,自动触发执行__dict__                  存储类或实例的所有属性

python基础操作_方法(函数)

#函数,方法#普通方法def hello(): print('hello')hello()#带形参的方法def hello1(name): print('hello%s'%name)hello1('布拉德皮特')#多个参数的方法def hello2(name1,name2): print('hello%s和%s'%(name1,name2))hello2('布拉德皮特','dirk')#带默认值参数的方法def hello3(name1,name2,name3='法拉利'): print('he

Python学习之路第二天——函数

一.Python2.X内置函数表: 注:以上为pyton2.X内置函数,官方网址:https://docs.python.org/2/library/functions.html 二.Python3.X内置函数表: 注:以上为pyton3.X内置函数,官方网址:https://docs.python.org/3.5/library/functions.html 三.自定义函数: def 函数名(参数):     ... 函数体     ... def:是函数的关键字,告诉python解释器这是一

Python面向对象编程 绑定方法

类的函数属性绑定给不同对象,是不同的绑定方法.对象调用绑定方法时会把对象本身当做self参数传入 示例代码 class People: country = 'China' ? def __init__(self, name, sex, age): self.Name = name self.Sex = sex self.Age = age ? def test(self): print(self) ? ? conan = People('Conan', 'male', 8) wukong = P

九.python面向对象(内置方法)

一. 内置方法 1.__getattr__ 原文地址:https://www.cnblogs.com/Sup-to/p/10887811.html

python 面向对象拓展isinstance 和issubcalss函数

isinstance判断对象是否为类的实例. n1 = 9 print isinstance(n1,str) True class A: pass class B(A): pass a =B() print isinstance(a,A) True issubcalss判断类是否为子类 class A: pass class B(A): pass print issubclass(B,A) True

(转)Python 面向对象编程(一)

Python 面向对象编程(一) 虽然Python是解释性语言,但是它是面向对象的,能够进行对象编程.下面就来了解一下如何在Python中进行对象编程. 一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class className: block 注意类名后面有个冒号,在block块里面就可以定义属性和方法了.当一个类定义完之后,就产生了一个类对象.类对象支持

python 面向对象编程(一)

一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class className: block 注意类名后面有个冒号,在block块里面就可以定义属性和方法了.当一个类定义完之后,就产生了一个类对象.类对象支持两种操作:引用和实例化.引用操作是通过类对象去调用类中的属性或者方法,而实例化是产生出一个类对象的实例,称作实例对象.比如定义了一个people类: cl

Python面向对象编程总结(上)

在我学习python之前一直认为python是脚本型语言,不能用面相对象的方法进行编程,当我学习了python之后我发现我错了,python不但支持面相对象而且使用的人还挺多的.我从接触编程开始就是学习的Java语言,所以面相对象编程的思想在我的脑海里根深蒂固,让我一下从面向对象编程转换到面向过程编程还有一些不适应呢,所以我就来总结一下python面向对象编程的方法和过程.我将按照面向对象的构成要素来分析,依次为类和实例.属性.方法.封装.继承.多态,如果有什么问题还请大家积极指出,我所用的版本