Python 如何解决在变量中使用类的问题
我用来执行一些代码的格式是基于变量“tester”所属的类的,它似乎不起作用。如何编写代码以更改类“testClass()”中的变量“var” 我已尝试将格式从“if tester==testClass():”更改为“if testClass(),在[tester]:”中,但既不工作也不返回错误。将“var=second”更改为“var=”second“似乎也没有帮助,删除任何括号也没有帮助 代码如下: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
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
的类变量,而不是实例变量。见: