这两个函数似乎做相同的事情,那么使用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
}
答案 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__
已定义。