zoukankan      html  css  js  c++  java
  • python之面向对象高级进阶-反射与内置模块

    内置函数模块isinstanceissubaclass

    class Foo:
        pass
    
    obj=Foo()
    
    print(isinstance(obj,Foo))     #isinstance(obj,Foo)判断是否obj是否是类 Foo 的对象
    isinstance(obj,Foo)判断是否obj是否是类 Foo 的对象
    
    
    class Parent:
        pass
    
    class Sub(Parent):
        pass
    
    print(issubclass(Sub,Parent))
    print(issubclass(Parent,object))    #issubclass(sub, Parent)判断sub类是否是 Parent 类的派生类
    issubclass(sub, Parent)判断sub类是否是 Parent 类的派生类

    1.什么是反射

        通过字符串来操作类或者对象的属性

    2.如何用   

    hasattr
    
        getattr
    
        delattr
    
    class People:
        country='China'
        def __init__(self,name):
            self.name=name
    
    
        def eat(self):
            print('%s is eating' %self.name)
    
    
    
    peo1=People('egon')       
    
    print(hasattr(peol,‘eat’))                  #判断peol里面有没eat字符 返回值:true或false
    
    print(getattr(peol,‘eat’))                  #判断对象中有没有eat字符对应的方法或属性,有的话得到属性结果或函数内存地址
    
    print(getattr(peol,'xxxxx',None))                     #对象中没有的话,直接报错,可以在后面添加一个返回条件
    
    setattr(peol,'age',18)   #peol.age=18             #增加属性
    
    delattr(peol,name)      #del peol.name           #删除属性
    
    例:
    
    class Ftp:    
    
        def __init__(self,ip,port):
    
                self.ip=ip
    
                self.port=port
    
        def get(self):
    
                print('GET function')
    
        def put(self):
    
               print('PUT function')
    
    
    
        def run (self):
    
            while True:
    
            method=getattr(self,choice,None)      #判断对象中有没对应发方法或属性,是函数属性是话返回的函数内存地址
    
            if method is None:
    
                    print('输入的命令不存在‘)
    
            else:
    
                    method()
    
    con=Ftp(‘1.1.1.1’,23)
    
    con.run
    
    
  • 相关阅读:
    Java入门系列-10-数组
    Java入门系列-09-循环结构
    Java入门系列-08-选择结构
    Java入门系列-07-从控制台中接收输入
    Java入门系列-06-运算符
    05-数据类型和类型转换
    004 java中的变量
    Filter过滤器实现同一地址手机和电脑页面不同
    Java 8 Lambda表达式10个示例【存】
    Centos7+Apache2.4+php5.6+mysql5.5搭建Lamp环境——为了wordPress
  • 原文地址:https://www.cnblogs.com/Marcki/p/10111940.html
Copyright © 2011-2022 走看看