zoukankan      html  css  js  c++  java
  • 面向对象进阶

    面向对象相关内置函数

    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) #报错
  • 相关阅读:
    NOIP2018 模拟赛(二十二)雅礼NOI
    浅谈左偏树在OI中的应用
    HDU3062&&HDU1814
    2-SAT超入门讲解
    bitset常用用法&&简单题分析
    NOIp2014提高组初赛错题简析
    2018十月刷题列表
    BZOJ 4804: 欧拉心算
    Luogu P2568 GCD
    Luogu P4137 Rmq Problem / mex
  • 原文地址:https://www.cnblogs.com/bypp/p/8329438.html
Copyright © 2011-2022 走看看