在python中选择默认参数值?

时间:2016-11-03 23:05:21

标签: python python-2.7

此代码一直给我错误:

TypeError:' NoneType'对象没有属性' getitem '

class d_exposure(object):   
    def __init__(self):
        self.files = glob.glob('C:\files')
    def exposure(self,level):
        level = inspect.getargspec(d_exposure().exposure)[3][0]
        print level
def main():
    mp = d_exposure()
    mp.exposure(level = 'MID')

似乎问题是它需要一个默认值。然而,追溯显示它正在获得一个值。

Traceback (most recent call last):
  File "C:\Users\Documents\my_scripts\exposure.py", line 58, in <module>
main()
  File "C:\Users\Documents\my_scripts\exposure.py", line 54, in main
mp.exposure(level = 'MID')
  File "C:\Users\Documents\my_scripts\exposure.py", line 17, in exposure
level = inspect.getargspec(d_exposure().exposure)[3][0]

当我尝试给它一个默认值&#39; DIM&#39;时,输出有&#39; DIM&#39;,即使我拨打的电话是mp.exposure(等级=&#39; MID&#39)。有人可以帮我弄清楚我做错了吗?

1 个答案:

答案 0 :(得分:1)

    inspect.getargspec(d_exposure().exposure)

此行为您提供以下输出:

ArgSpec(args=['self', 'level'], varargs=None, keywords=None,           defaults=None)

最后一个条目是None,您尝试通过访问第0个元素来调用 getitem 方法。 当您将默认设置为&#39; DIM&#39;时,getargspec方法输出中的最后一个值是[&#39; DIM&#39;]因此它会为您提供DIM&#39; DIM&#39;作为答案。

在main方法中执行此操作时:

mp.exposure(level = 'MID')

您将MID作为参数而不是默认值。默认值只能在函数定义期间给出。 你还没有明确说明你想要做什么,所以我不能给你输入。