getattr() 函数用于返回一个对象属性值;

语法

getattr(object, name[, default])

参数

object -- 对象。
name -- 字符串,对象属性。
default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError

返回值:对象的属性

使用:

class A:
def __init__(self):
self.name = 'chen_ke_cheng'
def method(self):
print('method print') # 实例化
Instance = A()
#%%
#如果Instance 对象中有属性name则打印self.name的值,否则打印'not find'
print(getattr(Instance, 'name', 'not find'))
>> chen_ke_cheng
print(getattr(Instance, 'age', 'not find'))
>> not find
#%%
#如果子函数method,否则打印其地址,否则打印default,优先匹配_init_里的属性,如果添加self.method='ckc', 则这句话将打印输出'ckc'
print(getattr(Instance, 'method', 'default'))
>><bound method A.method of <__main__.A object at 0x000001E39B6B1160>>
#如果有子函数method,实例化后运行函数并打印None否则打印default
print(getattr(Instance, 'method', 'default')())
>>method print
None

 


express1 for var in list (if express2) 

语法

在 for 语句后面跟上一个 if 判断语句,用于过滤掉那些不满足条件的结果项。

返回值:一般为一个list类型

用法1:express1 for var in list 

def_model = 'LstmModel'
def find_class_by_name(name, modules):
#module 在modules中迭代, 且module 用于判断有无name属性,并赋值
modules = [getattr(module, name, None) for module in modules]
return next(a for a in modules if a) #find_class_by_name返回的值为类LstmModel的地址,需要对此类进行实例化,得到类变量model,list中为两个文件
model = find_class_by_name(def_model,[frame_level_models,video_level_models])()
#则对model类的子函数进行实例化,则运行子函数。
print(model.create_model())
>>LstmModel
None #%%
frame_level_models.py class FrameLevelLogisticModel:
def create_model(self):
print('FrameLevelLogisticModel') class LstmModel:
def create_model(self):
print('LstmModel')
#%%
video_level_models.py class FrameLevelLogisticModel:
def create_model(self):
print('FrameLevelLogisticModel') class ModaModel:
def create_model(self):
print('ModaModel')

用法2:express1 for var in list  if express2

L = [1, 2, 3, 4, 5, 6]
L = [x for x in L if x % 2 != 0]
>>L = [1, 3, 5]

next() 返回迭代器的下一个项目

语法

next(iterator[, default])

参数

iterator -- 可迭代对象
default -- 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。

用法

# 首先获得Iterator对象
#注意加括号是产生一个迭代器
#如 g = (x * x for x in range(10)) g = iter([1,2,3,4,5,6....])就是产生一个迭代器
it = iter([1, 2, 3, 4, 5])
# 循环:
while True:
try:
# 获得下一个值:
x = next(it)
print(x)
except StopIteration:
# 遇到StopIteration就退出循环
break >>1
>>2
>>3
....

(python)getattr等用法的更多相关文章

  1. python之函数用法getattr()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法getattr() #getattr() #说明: ''' getattr(...) ...

  2. Python回调函数用法实例详解

    本文实例讲述了Python回调函数用法.分享给大家供大家参考.具体分析如下: 一.百度百科上对回调函数的解释: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函 ...

  3. python map 的用法

    map的用法 ——.我们来分析map在python的源码 class map(object): """ map(func, *iterables) --> map ...

  4. day01-day04总结- Python 数据类型及其用法

    Python 数据类型及其用法: 本文总结一下Python中用到的各种数据类型,以及如何使用可以使得我们的代码变得简洁. 基本结构 我们首先要看的是几乎任何语言都具有的数据类型,包括字符串.整型.浮点 ...

  5. 【Python】关于Python有意思的用法

    开一篇文章,记录关于Python有意思的用法,不断更新 1.Python树的遍历 def sum(t): tmp=0 for k in t: if not isinstance(k,list): tm ...

  6. python中xrange用法分析

    本文实例讲述了python中xrange用法.分享给大家供大家参考.具体如下: 先来看如下示例: >>> x=xrange(0,8) >>> print x xra ...

  7. 浅谈Python在信息学竞赛中的运用及Python的基本用法

    浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...

  8. python scapy的用法之ARP主机扫描和ARP欺骗

    python scapy的用法之ARP主机扫描和ARP欺骗 目录: 1.scapy介绍 2.安装scapy 3.scapy常用 4.ARP主机扫描 5.ARP欺骗 一.scapy介绍 scapy是一个 ...

  9. python函数的用法

    python函数的用法 目录: 1.定义.使用函数 1.函数定义:def 2.函数调用:例:myprint() 3.函数可以当作一个值赋值给一个变量 例:a=myprint()    a() 4.写r ...

随机推荐

  1. B树【Balanced-Tree】

    一.引言 B树是二叉平衡树的一个变种,在学习之前,我们先了解一下二分法,二叉树的一些相关的基本概念,有助于我们更好的理解B树~ 二.二叉树 定义:二叉树即二叉平衡树 意义:通过二分法来进行元素查找,时 ...

  2. Laravel驱动管理类Manager的分析和使用

    Laravel驱动管理类Manager的分析和使用 第一部分 概念说明 第二部分 Illuminate\Support\Manager源码 第三部分 Manager类的使用 第一部分:概念解释 结合实 ...

  3. 一款Java开源的Springboot即时通讯 IM,附源码

    # 开篇 电商平台最不能缺的就是即时通讯,例如通知类下发,客服聊天等.今天,就来给大家分享一个开源的即时通讯系统.如对文章不感兴趣可直接跳至文章末尾,有获取源码链接的方法. 但文章内容是需要你简单的过 ...

  4. Magicodes.IE之花式导出

    总体设计 Magicodes.IE是一个导入导出通用库,支持Dto导入导出以及动态导出,支持Excel.Word.Pdf.Csv和Html.在本篇教程,笔者将讲述如何使用Magicodes.IE进行花 ...

  5. 百度地图四(Android百度地图Poi检索开发总结)

    https://blog.csdn.net/wenzhi20102321/article/details/54575999

  6. RabbitMQ小记(一)

    1.了解消息中间件 消息中间件,Message Queue Middleware,简称MQ,又称消息对列或消息对列中间件,利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式 ...

  7. 小伙伴问我:如何搭建Maven私服?我连夜肝了这篇实战文章!!

    写在前面 十一假期期间,也有很多小伙伴不忘学习呀,看来有很多小伙伴想通过十一长假来提升自己的专业技能!这不,就有小伙伴在微信上问我:如何搭建Maven私服?让我专门推一篇搭建Maven私服的文章.安排 ...

  8. sqli-labs第二关 详解

    学会了第一关,时隔多天来到了第二关,怎么说了没有看wp就给做出来了. 首先,我是自己先判断了下,这个是什么注入 ?id=1' 不行 ?id=1' or '1'='1--+ 也不行 然后又尝试了下 ?i ...

  9. 引用类型之Array(一)

    Array类型 除了Object之外,Array类型在ECMAScript中也很常用.ECMAScript中的数组与其他多数语言中的数组有着相当大的区别.ECMAScript数组的每一项可以保存任何类 ...

  10. C++读写ini配置文件GetPrivateProfileString()&WritePrivateProfileString()

    转载: 1.https://blog.csdn.net/fengbingchun/article/details/6075716 2. 转自:http://hi.baidu.com/andywangc ...