将对象动态传递给类方法

时间:2021-01-24 12:47:13

标签: python python-3.x oop object overriding

我试图传入一个对象,以便它会被定义的方法 infection 修改。但是,当我确实传递它时,如下所示,它只传递一次。这是我第一次制作动态对象,所以我不太确定如何让它继续下去。

class Region:
    def __init__(self, name, population, cases, deaths):
        self.name = name
        self.population = population
        self.cases = cases
        self.deaths = deaths
        print(name, cases)       

    def infection(self, name, population, cases):
        while population > cases:
            cases = cases + 1
            return (cases)        
    
westernEurope = Region("Western Europe", 1000000, 0, 0)
print(westernEurope.infection("Western Europe", 1000000, 0))

我想要发生的是感染方法应该不断增加,直到达到病例数,但我还需要能够打印每个增量。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

您的代码存在缩进问题。

这应该可以满足您的要求:

class Region:
    def __init__(self, name, population, cases, deaths):
        self.name = name
        self.population = population
        self.cases = cases
        self.deaths = deaths
        print(name, cases)       

    def infection(self, name, population, cases):
        while population > cases:
            cases = cases + 1
            print(cases)
        return (cases)        
    
westernEurope = Region("Western Europe", 1000000, 0, 0)
print(westernEurope.infection("Western Europe", 1000000, 0))

答案 1 :(得分:0)

Infection() 改变类属性 case 并在每次循环时打印

class Region:
    def __init__(self, name, population, cases, deaths):
        self.name = name
        self.population = population
        self.cases = cases
        self.deaths = deaths
    
    def infection(self):
        while self.population > self.cases:
            self.cases += 1
            print(self.name, self.cases)        
    
westernEurope = Region("Western Europe", 100, 0, 0)
westernEurope.infection()

答案 2 :(得分:-1)

这是因为return立即终止了函数的运行,所以函数中不要有while循环,而是在你的main区域,像这样:

def infection(self, name, population, cases):
    cases = cases + 1

while population > cases:
    infection(pass all parameters)