那里有一个衬里可憎的地方更好?为什么?

时间:2018-10-30 22:19:10

标签: python

这两个函数似乎做相同的事情,那么使用getattr有什么意义呢?

const users = document.querySelector('.users');
const userData = [];

fetch(url)
    .then(blob => blob.json())
    .then(data => {
       userData.push(...data.results));
       const markup = userData.map(user => {...})
       users.innerHTML = markup
    }

2 个答案:

答案 0 :(得分:1)

getattr__dict__仅在需要获取其名称只能在运行时获取的属性的值时才有用。由于在这种情况下,您已经知道要使用chdir的固定属性,因此没有必要使用getattr或访问__dict__属性。您可以改为:

__import__('os').chdir("/content/")

但是再说一次,由于您要导入的模块也是固定的,因此您应该真正遵循import的正常用法:

import os
os.chdir("/content/")

答案 1 :(得分:1)

忽略它们的复杂性,它们在Python 3.7中明显不同

  • __import__(some_mdl).__dict__[name]将找到name,如果它已在模块中明确定义/分配;

  • getattr(__import__(some_mdl), name)将找到name(如果已在模块中明确定义/分配),如果没有,则然后如果some_mdl.__getattr__(name)则调用some_mdl.__getattr__已定义