如何解决在变量中使用类的问题

时间:2019-04-15 16:36:21

标签: python class variables if-statement

我用来根据变量“测试器”所在的类执行某些代码的格式似乎不起作用。如何编写代码,以使类“ testClass()”中的变量“ var”被更改。

我尝试将格式从“ if tester == testClass():”更改为“ if testClass()in [tester]:”,但是既没有工作,也没有返回错误。将'var = second'更改为'var =“ second”'似乎也无济于事,并且删除任何方括号也无济于事。

代码如下:

class fillClass():
    fill = True

class testClass():
    var = "first"
    filler = True

tester = testClass()
oldVar = tester.var
print(oldVar,"is older variable")
second = "second"

if tester == testClass():
    class testClass():
        var = second
        filler = True

tester = testClass()
newVar = tester.var
print(newVar,"is newer variable")

我希望输出

first is older variable
second is newer variable
>>> 

但实际输出是

first is older variable
first is newer variable
>>> 

如何解决此问题?

非常感谢!

2 个答案:

答案 0 :(得分:1)

问题在于此if子句:if tester == testClass(),由于调用testClass()实例化了一个全新的testClass类型的对象,因此它将始终为false。您想使用函数isinstance()检查变量是什么实例。

这就是您想要的:

class fillClass():
    fill = True

class testClass():
    var = "first"
    filler = True

tester = testClass()
oldVar = tester.var
print(oldVar,"is older variable")
second = "second"

if isinstance(tester,testClass):
    class testClass():
        var = second
        filler = True

tester = testClass()
newVar = tester.var
print(newVar,"is newer variable")

答案 1 :(得分:0)

您正在将一个类的实例与一个不起作用的类进行比较。我不知道这是否是您要检查的内容,但如果是,您应该这样做:

代替:

if tester == testClass():

您必须使用:

if isistance(tester, testClass()):

此外,在您的代码中,您从未使用过fillClass

我猜您想要这样的东西:

class TestClass():
    var = "first"
    filler = True


tester = TestClass()
oldVar = tester.var
print(oldVar, "is older variable")
second = "second"

if tester.var == "first":
    tester.var = second

newVar = tester.var
print(newVar, "is newer variable")

请注意,您应该遵守Python类名的约定(大写驼峰),而不必再次重新定义类。

您还应该了解实例变量和类变量之间的区别,并且可能要使用de class构造函数:

class TestClass():
    def __init__(self, var, filler=True):
        self.var = var
        self.filler = filler