Python在方法中动态访问实例变量

2024-09-29 23:14:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在python中向实例列表添加一个值,但希望从方法中动态地访问它。你知道吗

我不能使用字典,因为我正试图加快对单独列表(框)的排序,而不是一个大列表。你知道吗

有人能告诉我做下列事情的正确方法吗?你知道吗

class Boxes:

    def __init__(self):
        self.box1 = []
        self.box2 = []
        #....
        self.box10 = []


    def addToBox(self, value):
        box = self.determineBoxToUse(value)
        ## box = 2
        varname = "box", box ## box2
        self.varname.insert(0, value)

    def determineBoxToUse(self, value):
        ## for this example returns 2
        return 2

    def dumpBox(self):
        print self.box2

Boxes = Boxes();
Boxes.addToBox("123.001234")
Boxes.dumpBox()

错误:AttributeError:Box实例没有属性“varname”

谢谢


Tags: 实例方法selfbox列表valuedef动态
1条回答
网友
1楼 · 发布于 2024-09-29 23:14:49

您可以使用^{}^{},尽管许多人可能建议您采用不同的解决方案。你知道吗

def addToBox(self, value):
    box = self.determineBoxToUse(value)
    ## box = 2
    varname = "box{}".format(box) ## box2
    if hasattr(self, varname):
        getattr(self, varname).insert(0,value)

演示:

>>> class Boxes:

    def __init__(self):
        self.box1 = []
        self.box2 = []
        #....
        self.box10 = []


    def addToBox(self, value):
        box = self.determineBoxToUse(value)
        ## box = 2
        varname = "box{}".format(box) ## box2
        if hasattr(self, varname):
            getattr(self, varname).insert(0,value)

    def determineBoxToUse(self, value):
        ## for this example returns 2
        return 2

    def dumpBox(self):
        print self.box2


>>> Boxes = Boxes()
>>> Boxes.addToBox("123.001234")
>>> Boxes.dumpBox()
['123.001234']
>>> 

相关问题 更多 >

    热门问题