class test():
def __init__(self):
self.height=int(input("how height are you"))
def fun(self,x):
print(x+self.height)
for i in range(1,10):
test().fun(i)
代码将执行9次。每次弹出一个how height are you
的窗口,您都可以输入一个值。
现在我想要的是self.height
在我第一次输入值时修复,并且第二次不再有how height are you
个弹出窗口(也就是说{{} 1}}))。
i=1
如何填写一些代码或将其更改为其他结构?
答案 0 :(得分:1)
您正在实例化test()
循环的每次迭代,它运行__init__
函数(并重置实例成员)。
我认为您想要做的是在循环外实例化test
:
testObject = test()
并使用循环中的对象:
for i in range(1,10):
testObject.fun(i)
答案 1 :(得分:0)
只创建一个test
对象(在for
循环之前)并且您只需输入一次值:
class test():
def __init__(self):
self.height=int(input("How tall are you? "))
def fun(self,x):
print(x+self.height)
obj = test()
for i in range(1,10):
obj.fun(i)
(我也冒昧地纠正输入提示。)
答案 2 :(得分:0)
这可以通过创建函数的对象并将其传递给循环来完成。
class test():
def __init__(self):
self.height=int(input("How tall are you? "))
def fun(self,x):
print(x+self.height)
Theobject = test()
for m in range(1,10):
obj.fun(i)
答案 3 :(得分:0)
您可以创建Factory
类来动态生成Test
个实例,如下所示:
class Test(object):
def __init__(self, height):
self.height = height
def fun(self, x):
print(x + self.height)
class TestFactory(object):
def __init__(self):
self.height = None
def test(self):
if self.height is None:
self.height = int(input("how height are you"))
return Test(self.height)
fac = TestFactory()
for i in range(1,10):
fac.test().fun(i)
在这种情况下,Test
是静态初始化的正常类,但您可以动态分配初始参数。这在Java
中很常见。