簡體   English   中英

如何使用For循環在Python字典中的對象上應用isinstance()

[英]How to apply isinstance() on objects in a Python dictionary using a For loop

有沒有一種方法可以讓我對以下代碼中是否有從ProjectTypeB類生成的嵌套對象進行快速True / False

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...

一種快速的方法是通過any帶有生成器表達式的方法:

return any(isinstance(p, ProjectTypeB) for p in self.subProjects)

是的,使用諸如for的循環結構而不是with對其進行迭代。 with用於具有不同用例的上下文管理器。

for p in self.subProjects
    if isinstance(p, ProjectTypeB):
        # rest of code

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM