Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用For循环对Python字典中的对象应用isinstance()_Python_Oop_For Loop - Fatal编程技术网

如何使用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
,是吗?