打印 NumericProperty() kivy 的值

print the value of a NumericProperty() kivy

如果我的两个屏幕上有一个数字 属性 来计算一个人点击正确图标的次数,我想在单独的 class 中打印它,我该怎么做?我尝试使用 print() 函数并使用 print(StringProperty(str())) 但我没有打印数值。当我在 VerifyAA()VerifyBB() 中打印 correct_counter 时,打印了正确的值。

class A(Screen):
    correct_counter1 = NumericProperty(0)
    def verifyAA(self, *args):
        if self.AA == V.Check1 or self.AA == V.Check2 or self.AA == V.Check3:
            print("You got it!!!")
            self.correct_counter1 =  self.correct_counter1 + 1
            print(self.correct_counter1)
            self.ids.aa.disabled = True

class B(Screen):
    correct_counter2 = NumericProperty(0)
    def verifyBB(self, *args):
        if self.BB == VV.Check1 or self.BB == VV.Check2 or self.BB == VV.Check3:
            print("You got it!!!")
            self.correct_counter2 =  self.correct_counter2 + 1
            print(self.correct_counter2)
            self.ids.bb.disabled = True

class Answers(Screen):
    print(A.correct_counter1)
    print(StringProperty(str(B.correct_counter2)))

这是分别打印的内容:

<NumericProperty name=correct_counter>
<StringProperty name=>

您需要了解 class 的定义和 class 的实例之间的区别。当您打印 A.correct_counter1 时,您会打印定义在 class 级别的 NumericProperty 对象本身。这是唯一合理的结果——打印 属性 的值没有意义,因为它 没有 值。例如,如果您写 instance1 = A(correct_counter1=1); instance2 = A(correct_counter1=20) 您希望 print(A.correct_counter1) 打印什么值?答案不一定是,属性 的值在每种情况下都是为 class 实例定义的,而不是 class 本身。

正确的解决方案是您必须通过 class 的实例打印 属性 的值。例如,如果你写 instance = A(); print(instance.correct_counter1) 你会打印出你期望的数字。执行此操作的最佳方法取决于程序的结构和 classes 之间的关系。您的示例不是可运行的程序,因此无法提出具体建议。如果你有一个实际的例子,你想这样做但不知道如何做,post那是一个新问题。