2

通过添加详细信息修改问题

我有一堂课general.py

class TestProcedure:
    name = "Undefined test procedure"
    description = None
    sequence_count = 0
    .....

以上述类为基础,我在各种文件中创建各种类,例如其中一个文件是file1.py

from general import *

class F1(TestProcedure):

    def performTest(self):
        #HERE I WANT TO INCREMENT sequence_count#               
                 

第二个文件是file2.py

from general import *   

class F2(TestProcedure):

    def performTest(self):
        #HERE WHEN I TRY TO ACCESS sequence_count I GET A LAST MODIFIED VALUE#

如上所示,我需要几个这样的类,它们将尝试访问 sequence_Count 并且每当我尝试执行任何文件sequence_count时都会获取最后修改的值。

如果有任何方法可以做到这一点,请告诉我。

4

3 回答 3

4

我不知道您是如何更新sequence_count的,但如果您要更新原始而不是实例的属性,那么它应该反映到所有继承的类。

例如

class TestProcedure(object):
    sequence_count = 0

class F1(TestProcedure):
    pass

# These are instances of your class
# We will modify one later to see what happens
class_instance = F1()
un_altered_class_instance = F1()

# This is updating your class
TestProcedure.sequence_count = 20

# This is updating the instance of your class
class_instance.sequence_count = 5

new_class_instance = F1()

print(F1.sequence_count)
# 20
print(class_instance.sequence_count)
# 5
# This outputs 5 as we modified the attribute of the instance
print(un_altered_class_instance.sequence_count)
# 20
# This outputs 20 as we did not modify the attribute of this instance 
print(new_class_instance.sequence_count)
# 20

正如您从上面的示例中看到的那样,这将更新您的原始类以及从它继承的任何内容,包括尚未sequence_count修改属性的实例。如果它们具有,从上面的 中可以看出class_instance,它们将保留其修改后的值。

于 2013-08-02T11:39:49.347 回答
0

默认情况下,类定义中定义的所有变量都是静态的。因此,您可以做的是在任何地方使用 TestProcedure.sequence_count 代替 sequence_count ,并且更改将反映在所有文件中。

于 2013-08-02T11:42:26.650 回答
0

看起来您想要一个全局变量(好吧,无论如何都在模块内)。几乎可以肯定,有一些更好的设计替代方案可以避免您在此处寻求的耦合,但如果没有更多细节,全局变量似乎是最简单的答案。

于 2013-08-02T11:34:24.270 回答