zoukankan      html  css  js  c++  java
  • Python基础25类-反射

    #反射的方法:hasattr(),getattr(),setattr(),delattrr()
    class BlackMedium:
        city='佛山'
        def __init__(self,name,addr):
            self.name=name
            self.addr=addr
        def rent_house(self):
            print('[%s]正在出租%s的房子'%(self.name,self.addr))
    
    b1=BlackMedium('小黑','千灯湖')
    print(hasattr(b1,'addr'))#属性名要写字符串格式
    func=getattr(b1,'rent_house')#找不到属性则报错,但可加参数,找不到属性返回参数内容如下
    print(getattr(b1,'age','找不到该属性'))
    func()
    setattr(b1,'age',18)
    setattr(b1,'func',lambda x:x+1)
    setattr(b1,'func1',lambda self:self.name+'sb')
    print(b1.func(10))
    print(b1.func1(b1))
    print(b1.__dict__)
    delattr(b1,'age')
    print(b1.__dict__)
    #反射可以实现分开开发,进度互不影响
    class FtpClient:
        'ftp客户端,但还没有实现具体功能'
        def __init__(self,addr):
            print('正在链接服务器【%s】'%addr)
            self.addr=addr
    f1=FtpClient('10.26.76.175')
    if hasattr(f1,'get'):
        func_get=getattr(f1,'get')
        func_get()
    else:
        print('----->不存在此方法')
        print('处理其他的逻辑')
    #动态导入模块
    module_t=__import__('doc.t')
    print(module_t)
    module_t.t.test()
    
    from doc.t import *
    test()
    
    import importlib
    m=importlib.import_module('doc.t')
    print(m)
    m.test()
  • 相关阅读:
    C++雾中风景1:友元类与面向对象
    NFS服务器的安装与配置
    未来工作相关
    python 函数
    pycharm、sublime个性化设置
    hadoop中HDFS的NameNode原理
    Cat搭建遇坑记
    美团点评CAT监控平台研究
    阿里sentinel源码研究深入
    阿里熔断限流Sentinel研究
  • 原文地址:https://www.cnblogs.com/josie930813/p/10452801.html
Copyright © 2011-2022 走看看