码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象进阶

时间:2018-01-22 17:28:32      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:面向   col   log   nbsp   foo   body   变量   面向对象   set   

面向对象相关内置函数

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) #报错

 

面向对象进阶

标签:面向   col   log   nbsp   foo   body   变量   面向对象   set   

原文地址:https://www.cnblogs.com/bypp/p/8329438.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!