我们说我有这样的代码
class A:
var1 = self.var0
def __init__(self, var0):
self.var0 = var0
如何在不将var1放入init函数的情况下将self.var0转换为var1?
答案 0 :(得分:1)
我有两个选择:
1)如果要使用A.var1 = var0创建A对象,请将其包含在init函数中:
class A:
def __init__(self, var0):
self.var0 = var0
self.var1 = self.var0
2)如果你真的不想在init函数中使用var1,你可以像这样创建一个属于A类的函数:
class A:
def __init__(self, var0):
self.var0 = var0
def setVar1(var1):
self.var1 = var1
然后要创建一个A对象并将其v1值设置为等于v0,您可以执行以下操作:
v0 = some_value
a = A(v0)
a.setVar1(v0)
修改强>
3)正如“Blckknght”在其他答案之一的评论中所建议的那样:你可以链接赋值语句:
self.var0 = self.var1 = var0
答案 1 :(得分:0)
请改为尝试:
class A:
def __init__(self, var0):
self.var1 = self.var0 = var0
但是,我没有看到太多的意义,而只是简单地将其初始化为:
class A:
def __init__(self, var0):
self.var1 = var0
如果您希望两个变量具有相同的值,请坚持使用第一种方法。
答案 2 :(得分:0)
在您的代码中var1 = self.var0
是在类级别,而不是在实例级别,因此self
在这里没有意义。要看到它,试试这个:
class C(object):
field1 = 1
def __init__(self):
self.field2 = 2
print(C.field1)
print(C.field2) # should raise an exception
instance = C()
print(instance.field1) # not found in instance but found at upper level (class-level)
print(instance.field2)