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

Python 如何解决在变量中使用类的问题,python,class,variables,if-statement,Python,Class,Variables,If Statement,我用来执行一些代码的格式是基于变量“tester”所属的类的,它似乎不起作用。如何编写代码以更改类“testClass()”中的变量“var” 我已尝试将格式从“if tester==testClass():”更改为“if testClass(),在[tester]:”中,但既不工作也不返回错误。将“var=second”更改为“var=”second“似乎也没有帮助,删除任何括号也没有帮助 代码如下: class fillClass(): fill = True class test

我用来执行一些代码的格式是基于变量“tester”所属的类的,它似乎不起作用。如何编写代码以更改类“testClass()”中的变量“var”

我已尝试将格式从“if tester==testClass():”更改为“if testClass(),在[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
>>> 
如何解决此问题


非常感谢

问题在于这个if子句:
if tester==testClass()
,它的计算结果总是为false,因为调用
testClass()
会实例化testClass类型的全新对象。您希望使用函数
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")

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

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")
而不是:

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类名约定(大写camelcase),并且不必再次重新定义类

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

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

比较两个不同的实例时,
==testClass()
将产生False。使用
isinstance
@BenedictSteele别忘了遵循常规并标记解决问题的答案:)还应注意,
var
testClass
的类变量,而不是实例变量。见: