如何遍历类属性列表并更改其值?

时间:2020-10-14 21:47:10

标签: python kivy

我正在尝试创建一个函数,如果用户未在输入字段中输入任何值,则它将文本值设置为0或任何其他数字。

    value_text = [self.trig_side_a_value.text, self.trig_side_b_value.text, self.trig_side_c_value.text, self.trig_angle_A_value.text, self.trig_angle_B_value.text, self.trig_angle_C_value.text]
    for i in value_text:
        if i == "":
            i = "0"
        else:
            pass

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,所以这里有很多错误。我将尝试以尽可能多的解释来回答这个问题。

一件事不对:

trial %>%
  select(trt, marker, stage) %>%
  tbl_summary() %>%
  modify_header(stat_by = "**{level}**, n(%)")

这将创建一个列表value_text = [self.trig_side_a_value.text, self.trig_side_b_value.text, self.trig_side_c_value.text, self.trig_angle_A_value.text, self.trig_angle_B_value.text, self.trig_angle_C_value.text] for i in value_text: if i == "": i = "0" ,并使用文本属性的副本填充该列表。更改列表中的内容不会影响self..text的元素。

需要发生的是,您需要遍历类的属性,并设置每个属性的value_text成员:

这是一个解决方案:

text

希望有帮助。其他人,请更正我对class TextContainer(): """ This is a class with just one attribute 'text' """ def __init__(self, text=""): self.text = text class TestClass(): """ This class contains a set of TextContainer objects as its attributes. """ def __init__(self): self.trig_side_a_value = TextContainer("a") self.trig_side_b_value = TextContainer("b") self.trig_side_c_value = TextContainer() self.trig_angle_A_value = TextContainer("A") self.trig_angle_B_value = TextContainer("B") self.trig_angle_C_value = TextContainer() def test_me(self): """ Test the setting of each attribute """ for attr, container in self.__dict__.items(): if not container.text: container.text = "0" def __str__(self): """ Returns a string representation of the class """ return "TestClass: ({}, {}, {}, {}, {}, {})".format( self.trig_side_a_value.text, self.trig_side_b_value.text, self.trig_side_c_value.text, self.trig_angle_A_value.text, self.trig_angle_B_value.text, self.trig_angle_C_value.text) def main(): test = TestClass() test.test_me() print(test) if __name__ == '__main__': main() 的使用-我在这里有些不稳定。