在python中选择默认参数值?

2024-05-19 01:42:06 发布

您现在位置:Python中文网/ 问答频道 /正文

这段代码一直告诉我错误:

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')

问题似乎是它需要一个level的默认值。然而,回溯显示它得到了一个值

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]

当我尝试给它一个默认值'DIM'时,输出就有'DIM',即使我所做的调用是mp.exposure(level='MID')。有人能帮我找出我做错了什么吗


Tags: inpyselfmainmydeflinescripts
1条回答
网友
1楼 · 发布于 2024-05-19 01:42:06
    inspect.getargspec(d_exposure().exposure)

此行提供以下输出:

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

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

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

mp.exposure(level = 'MID')

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

相关问题 更多 >

    热门问题