设置对象的属性等于其他属性Python

时间:2017-03-03 20:22:07

标签: python-2.7

我正在尝试将其中一个对象属性设置为等于其他属性的组合。

class poly_Uservar(object):
def __init__(self):
    self.long1 = 0
    self.long2 = 0
    self.long3 = 0
    self.long4 = 0
    self.x = 0
    self.command = ''
    self.formats = self.long1,self.long2,self.long3,self.long4
def setUservars(self):
    for self.x in range (0,50):
        decim1 = float(.07)*float(self.x)
        decim2 = float(.07)*float(self.x+1)
        self.long1 = float(float(10.00000) + float(decim1))
        self.long2 = float(float(10.00000) + decim2)
        self.long3 = float(self.long1 +.030000)
        self.long4 = float(self.long3 +.020000)
        cmd = self.command % self.formats
        print cmd

        time.sleep(.2)  
def main():
    type= raw_input('Enter type')
    Uservar = poly_Uservar()
    if type == '3':
        Uservar.command = 'Uservar[%i]: 10.07000 %f 10.01000 %f 9.93000 %f\r'
        Uservar.formats = Uservar.x,Uservar.long1,Uservar.long2,Uservar.long1
        Uservar.setUservar()
    if type == '4':
        Uservar.command = 'Uservar[%i]: 10.07000 %f 10.01000 %f 9.93000 %f 9.93000 %f\r'
        Uservar.formats = Uservar.x,Uservar.long1,Uservar.long2,Uservar.long2,Uservar.long1
        Uservar.setUservar()

我遇到的问题是我的格式atrribute在设置时没有更新到其他属性。我无法在for循环中重新分配它们,因为根据用户输入,格式会发生变化。所以cmd总是打印出其他属性也被初始化的内容。有没有办法强制我的代码更新我的格式属性,因为它们在我的方法中更改? 谢谢你的推荐!

1 个答案:

答案 0 :(得分:0)

好的,我最终想出了一个有效的解决方案。然而,它并不是很好的#34;但是,如果有人有更好的方法,我仍然希望看到:)无论如何,这就是我最终做的事情。

class poly_Uservar(object):
    def __init__(self):
        self.long1 = 0
        self.long2 = 0
        self.long3 = 0
        self.long4 = 0
        self.command = ''
        self.formats = [1,2,3]

def setUservars(self):
    for self.x in range (0,50):
        for x in range (0,50):
            decim1 = float(.07)*float(x)
            decim2 = float(.07)*float(x+1)
            self.long1 = float(float(10.00000) + float(decim1))
            self.long2 = float(float(10.00000) + decim2)
            self.long3= float(self.long1 +.030000)
            self.long4= float(self.long3 +.020000)
            vals = [self.long1, self.long2, self.long3, self.long4]
            cmd_args = [x]
            for i in range (0, len(self.formats)):
                cmd_args.append(vals[self.formats[i]-1])
            cmd = self.command % tuple(cmd_args)            
            print cmd
def main():
    type= raw_input('Enter type')
    Uservar = poly_Uservar()
    if type == '3':
        Uservar.command = ':Uservar[%i] 10.07000 %f 10.01000 %f 9.93000 %f\r'
        Uservar.formats = [1,2,1]
        Uservar.setUservar()