码迷,mamicode.com
首页 > 编程语言 > 详细

(python)getattr等用法

时间:2019-07-24 11:32:23      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:creat   eve   循环   module   元素   col   icm   匹配   lstm   

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等用法

标签:creat   eve   循环   module   元素   col   icm   匹配   lstm   

原文地址:https://www.cnblogs.com/ChenKe-cheng/p/11236915.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!