如何动态检查班级归因?

时间:2014-08-02 02:12:38

标签: python

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

如何填写一些代码或将其更改为其他结构?

4 个答案:

答案 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中很常见。