面向对象进阶

Posted Worth Waiting For

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象进阶相关的知识,希望对你有一定的参考价值。

面向对象相关内置函数

isinstance判断一个对象是否是一个类中的对象

class A:
    role = A
    def __init__(self,name):
        self.name = name

    def walk(self):
        print(A is walking)

a = A(少林寺)
print(isinstance(a,A))     #判断对象a是否是类A中的对象,返回布尔值

issubclass判断一个类是否是类中的子类 返回布尔值

class Foo:
    print(我是父类)

class Son1(Foo):
    print(我是子类1)

class Son2(Foo):
    print(我是子类2)

print(issubclass(Son1,Foo))
print(issubclass(Son2,Foo))       判断一个类(Son1或者Son2)是否是类(Foo)中的子类  返回布尔值   

反射

反射的概念

所谓的反射其实就是用字符串类型的名字 去操作 变量

反射的作用(优势)

反射提供的方法

反射提供了4个内置函数分别为:getattr、hasattr、setattr、delattr  获取成员、检查成员、设置成员、删除成员下面逐一介绍先看例子:

getattr获取成员

class Foo(object):
 
    def __init__(self):
        self.name = abc
 
    def func(self):
        return ok
 
obj = Foo()
#获取成员
ret = getattr(obj, func)#获取的是个对象
r = ret()
print(r)

hasattr检查成员

class Foo(object):
 
    def __init__(self):
        self.name = abc
 
    def func(self):
        return ok
 
obj = Foo()
#检查成员
ret = hasattr(obj,func)#因为有func方法所以返回True
print(ret)

setattr设置成员

class Foo(object):
 
    def __init__(self):
        self.name = abc
 
    def func(self):
        return ok
 
obj = Foo()

#设置成员
print(obj.name) #设置之前为:abc
ret = setattr(obj,name,19)
print(obj.name) #设置之后为:19

delattr删除成员

class Foo(object):
 
    def __init__(self):
        self.name = abc
 
    def func(self):
        return ok
 
obj = Foo()

#删除成员
print(obj.name) #abc
delattr(obj,name)
print(obj.name) #报错

 

以上是关于面向对象进阶的主要内容,如果未能解决你的问题,请参考以下文章

java学习---面向对象进阶

python-前方高能-面向对象-进阶3

python-面向对象进阶

进阶面向对象

python学习笔记-面向对象进阶&异常处理

python学习笔记-面向对象进阶&异常处理