【问题标题】:Why do my nested python class instances become tuples?为什么我的嵌套 python 类实例变成元组?
【发布时间】:2016-05-06 00:40:37
【问题描述】:

我已经定义了一些类:

class CustomParameter():
    def __init__(self, strFriendlyAttribName, strSystemAttribName):
        self.FriendlyAttribName = strFriendlyAttribName
        self.SystemAttribName = strSystemAttribName

class PartMaster():
    AttribNameList = ["Part Number", "Name", "Standard Part", "Part Type", "ControlledBy", "PIN", "Design Responsibility"]

    def __init__(self):
        self._UUID = None

        self.PartNumber = CustomParameter("Part Number", "V_ID"),
        self.Name = CustomParameter("Name", "V_name"),
        self.StandardPart = CustomParameter("Standard Part", "V508_isStandardPart"),
        self.PartType = CustomParameter("Part Type", "V511_PartType"),
        self.ControlledBy = CustomParameter("ControlledBy", "V511_ControlledBy"),
        self.PIN = CustomParameter("PIN", "BOECACPinItemNumber"),
        self.DesignResponsibility = CustomParameter("Design Responsibility", "BOECACDesignRpnse")

class Part():
    def __init__(self, PartNumber):

        self.PartNumber = PartNumber

        #This instance wraps
        self.PartMaster = PartMaster() #create new instance



test = Part("ABC")

我希望 test.PartMaster.PIN 是 CustomParameter 的一个实例,但它是一个元组 tuple: (<__main__.CustomParameter instance at 0x0000000002D724C8>,) 为什么会这样,我怎样才能让它不是这样?

我想构建我的类,以便test.PartMaster.PIN 将我的 CustomParameter 类的实例返回给我。有什么想法吗?

【问题讨论】:

    标签: python class tuples instance


    【解决方案1】:

    因为每当您的类初始化时,PartMaster 类的实例变量都会在末尾用逗号设置:)

    Python 对此进行解释:

    x = 'test',
    

    作为:

    ('test',)
    

    试试这个:

    def __init__(self):
        self._UUID = None
    
        self.PartNumber = CustomParameter("Part Number", "V_ID")
        self.Name = CustomParameter("Name", "V_name")
        self.StandardPart = CustomParameter("Standard Part", "V508_isStandardPart")
        self.PartType = CustomParameter("Part Type", "V511_PartType")
        self.ControlledBy = CustomParameter("ControlledBy", "V511_ControlledBy")
        self.PIN = CustomParameter("PIN", "BOECACPinItemNumber")
    

    这在我身上发生了很多次。每当我从编写大量字典切换到像这样在类中设置变量时,我总是忘记逗号。但是把头发拉出来一次,你就知道要找什么了!

    【讨论】:

    • Aww 括约肌。感谢您的帮助!
    • @nickvans 请接受此作为其他人的答案,看看它是否对您有所帮助!
    • 对不起!这在我的手机上并不明显......因为我想注意。再次感谢一百万!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2012-10-01
    • 2017-12-14
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多