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) #报错
  • 相关阅读:
    Linux CentOS7 下设置tomcat 开机自启动
    MYSQL批量导入数据报:[Err] 2006
    HTML页面仿WORD样式
    /usr/bin/ld: cannot find -lxxx 问题
    Linux 重命名
    Linux mail
    cenos 7 mysql
    linux 解压与压缩
    python 字符串替换
    cpu相关信息(进程、线程、核...)
  • 原文地址:https://www.cnblogs.com/bypp/p/8329438.html
Copyright © 2011-2022 走看看