python PEP 8 linter不喜欢这样:
assert type(a) == type(b)
它告诉我使用“ isinstance()”代替。但是要使用isinstance
,我必须做类似的事情
assert isinstance(a, type(b)) and isinstance(b, type(a))
这似乎更令人不安,我真的不明白这一点。
以某种我看不见的方式明智地支了棉绒吗?还是我以某种方式看不到棉绒呢?
答案 0 :(得分:1)
从注释中添加的上下文:
根据我的程序的逻辑,此时代码中应该有
public static class HttpContentExtensions { public static Task ReadAsFileAsync(this HttpContent content, string filename, bool overwrite) { string pathname = Path.GetFullPath(filename); if (!overwrite && File.Exists(filename)) { throw new InvalidOperationException(string.Format("File {0} already exists.", pathname)); } FileStream fileStream = null; try { fileStream = new FileStream(pathname, FileMode.Create, FileAccess.Write, FileShare.None); return content.CopyToAsync(fileStream).ContinueWith( (copyTask) => { fileStream.Close(); }); } catch { if (fileStream != null) { fileStream.Close(); } throw; } } }
,而我只是想断言要确保一切运行顺利
在这种情况下,您应该只忽略棉短绒,因为它没有建议任何对您有用的东西。 E271旨在通过类型检查来警告人们有关问题的信息,例如:
type(a) == type(b)
上面的示例可能忽略了if type(a) == A:
...
是a
子类的实例的可能性,从而无意中破坏了逻辑流程。