Python随心记--反射、动态导入模块

hasatttr(object,name)   #检测对象中是否存在name属性getattr(object,name,delault = Null)setattr(object,x,True)delattr(object,x)   #删除属性
class BlackMedium:
    feture = ‘Ugly‘
    def __init__(self,name,addr):
        self.name = name
        self.addr = addr
    def sell_hourse(self):
        print(‘[%s] 正在卖房‘ %self.name)

blackmedium = BlackMedium(‘青年公寓‘,‘南山‘)
print(hasattr(blackmedium,‘name‘))   #存在返回True
print(getattr(blackmedium,‘name‘,‘meiyouzhi‘))   #存在返回值
setattr(blackmedium,‘white‘,True)   #设置属性
setattr(blackmedium,‘func‘,lambda x:x+1)   #加函数
print(blackmedium.func(12))
#反射使用场景    1 实现可插拔机制    2 动态导入模块
class Ftpclient:
    def __init__(self,addr):
        self.addr = addr
        print(‘正在连接IP:%s服务器‘ %self.addr)
    def put(self):
        print(‘正在上传文件‘)
from  module import  Ftpclient  #模拟Ftpclient在module模块下

ftpclien = Ftpclient(‘192.168.0.1‘)
if hasattr(ftpclien,‘put‘):
    func_get = getattr(ftpclien,‘put‘)
    func_get()
else:
    print(‘方法不存在‘)
动态导入模块
module_t = __import__(‘m.t‘)   #传出字符串,类似于文明的名称
module_t.t.test()   #调用t下的test方法

import imaplib
imaplib.import_module(‘m.t‘)   #以字符串模式导入

原文地址:https://www.cnblogs.com/Essaycode/p/10203659.html

时间: 2024-10-11 04:53:48

Python随心记--反射、动态导入模块的相关文章

七. 使用反射动态导入模块

一 .动态导入模块 # 利用反射动态导入模块 执行模块中的函数 imp = input("请输入你想导入的模块名:") CC = __import__(imp) # 這种方式就是通过输入字符串导入你所想导入的模块 CC.f1() # 执行模块中的f1方法 print("******************************************") imp = input("请输入模块:") dd = __import__(imp) #

python 反射 动态导入模块 类attr属性

1.反射 hasattr getattr delattr setattr 优点:事先定义好接口,接口只有在被完成后才能真正执行,这实现了即插即用,这其实是一种“后期绑定”,即先定义好接口, 然后是再去实现具体的功能 print(hasattr(p, 'age')) # True 是否有属性 判断 print(getattr(p, 'name', '没有找到该参数')) # get属性值 print(getattr(p, 'name1', 'False')) # False setattr(p,

python26 封装 多态 常用的内置函数 `__str__` `__del__` 反射 动态导入模块

今日内容: 1. 封装 2.多态 3. 常用的内置函数 `__str__ `__del__` 4.反射 5.动态导入模块 #1. 封装 ##1.1 什么是封装 ?(what) 对外部隐藏内部的属性,以及实现细节  , 给外部提供使用的接口 注意:封装有隐藏的意思,但不是单纯的隐藏 1.2学习封装的目的. 就是为了能够限制外界对内部数据的访问 1.3python中属性的权限分为两种 1.公开的 ?           没有任何限制 谁都能访问 2.私有的 ?          只有当前类本身能够访

【Python学习之旅】---动态导入模块

#当一个模块名为字符窜的时候#第一种方式a=__import__('test.123')a.123 #a拿到的是最顶级的模块test ,然后调用123 #第二种方式import importlib #导入模块a=importlib.import_module('test.123') #调用方法拿到的直接是test.123 原文地址:https://www.cnblogs.com/chenyuxia/p/12147079.html

Python 实现接口类的两种方式+邮件提醒+动态导入模块+反射(参考Django中间件源码)

实现接口类的两种方式 方式一 from abc import ABCMeta from abc import abstractmethod class BaseMessage(metaclass=ABCMeta): @abstractmethod def send(self,subject,body,to,name): pass 方式二 class BaseMessage(object): def send(self, subject, body, to, name): raise NotImp

python中动态导入模块

如果导入的模块不存在,Python解释器会报 ImportError 错误: >>> import something Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named something 有的时候,两个不同的模块提供了相同的功能,比如 StringIO 和 cStringIO 都提供了Strin

Python动态导入模块

如果导入的模块不存在,Python解释器会报 ImportError 错误: >>> import something Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named something 有的时候,两个不同的模块提供了相同的功能,比如 StringIO 和 cStringIO 都提供了Strin

Python 动态导入模块

动态导入模块 目录结构: zhangsandeMacBook-Air:1110 zhangsan$ tree . . ├── lib │   └── aa.py ├── test1.py lib目录下有一个aa.py文件,其中C类中有一个属性name: class C: def __init__(self): self.name = 'zhangsan' 在test1.py文件中需要动态导入aa这个模块有两种办法: 第一种: lib = __import__('lib.aa') obj = li

Python importlib(动态导入模块)

使用 Python importlib(动态导入模块) 可以将字符串型的模块名导入 示例: import importlib module = 'module name' # 字符串型模块名 test = importlib.import_module(module) # 导入模块 print(test.Class().attr) # 打印 Class 类的 attr 属性 原文地址:https://www.cnblogs.com/dbf-/p/10667248.html