动态地将对象传递给 class 方法

Passing object into class method dynamically

我正在尝试传入一个对象,以便它可以通过定义的方法进行修改 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))

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

您的代码有缩进问题。

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

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))

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

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

while population > cases:
    infection(pass all parameters)

Infection() 更改 class 属性案例并在每个循环中打印它

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()