如何使用For循环对Python字典中的对象应用isinstance()
是否有一种方法可以快速获得如何使用For循环对Python字典中的对象应用isinstance(),python,oop,for-loop,Python,Oop,For Loop,是否有一种方法可以快速获得True/False关于是否有任何嵌套对象从下面的代码中的ProjectTypeB类生成 class Project(): def __init__(self): self.subProjects={} def addSubProject(self, child): child.parent=child self.subProjects[child.name]=child class ProjectTy
True
/False
关于是否有任何嵌套对象从下面的代码中的ProjectTypeB
类生成
class Project():
def __init__(self):
self.subProjects={}
def addSubProject(self, child):
child.parent=child
self.subProjects[child.name]=child
class ProjectTypeA():
def __init__(self, name):
self.name=name
class ProjectTypeB():
def __init__(self, name):
self.name=name
#Create instances
a=Project()
a.addSubProject(ProjectTypeA("Project1"))
a.addSubProject(ProjectTypeB("Project2"))
由此,我试图找到一种方法来检查a.subProjects
中的任何对象是否是从类ProjectTypeB
实例化的(例如)。我尝试过以下方法,但没有成功:
class Project():
#...
def ProjectTypeB_Specific(self):
with p in self.subProjects:
if isinstance(p, ProjectTypeB):
# Rest of code...
是的,使用循环构造(如
for
)而不是with
对其进行迭代<代码>与适用于具有完全不同用例的上下文管理器
for p in self.subProjects
if isinstance(p, ProjectTypeB):
# rest of code
是的,使用循环构造(如
for
)而不是with
对其进行迭代<代码>与适用于具有完全不同用例的上下文管理器
for p in self.subProjects
if isinstance(p, ProjectTypeB):
# rest of code
一种快速的方法是使用生成器表达式通过
any
:
return any(isinstance(p, ProjectTypeB) for p in self.subProjects)
一种快速的方法是使用生成器表达式通过
any
:
return any(isinstance(p, ProjectTypeB) for p in self.subProjects)
在self中使用p。子项目:
?你是说self.subProjects中p的吗:
谢谢你指出这一点-我不会“修复”我问题中的代码,因为这只会让未来的读者感到困惑<代码>在self中使用p。子项目:?你是说self.subProjects中p的吗:
谢谢你指出这一点-我不会“修复”我问题中的代码,因为这只会让未来的读者感到困惑。。。!谢谢这看起来很理想-尽管我尝试了以下操作,但是只返回FALSE(借口缺少回车!):如果有(self.subjects中p的isinstance(p,ProjectTypeB):打印“TRUE”else:打印“FALSE”
…知道我可能做错了什么吗?尝试打印p
它返回name错误:全局名称“p”未定义
…但是p
也不是self。p
是吗?谢谢,这看起来很理想-虽然我尝试了以下操作,但返回了FALSE(请原谅缺少回车符!):如果有(self.subProjects中p的实例(p,ProjectTypeB):打印“TRUE”否则:打印“FALSE”
…知道我可能做错了什么吗?尝试打印p
它会返回name错误:全局名称“p”没有定义
…但是p
也不是一个self.p
,是吗?