我用来根据变量“测试器”所在的类执行某些代码的格式似乎不起作用。如何编写代码,以使类“ 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
>>>
如何解决此问题?
非常感谢!
答案 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