小编dat*_*apy的帖子

python生成器yield语句不yield

这是我正在运行的代码:

def infinite_Third() -> Generator:
    num = 1
    while True:
        if num % 3 ==0:
            i = (yield num)
            if i is not None:
                num = i
        num += 1 

if __name__=='__main__':
    third_gen = infinite_Third()
    for i in third_gen:
        print(f"it is {i}")          
        if i>1000:
            break    
        third_gen.send(10*i+1) 
Run Code Online (Sandbox Code Playgroud)

我希望看到的结果是:

it is 3
it is 33
it is 333
it is 3333
Run Code Online (Sandbox Code Playgroud)

然而,我真正得到的是:

it is 3
it is 36
it is 366
it is 3666
Run Code Online (Sandbox Code Playgroud)

我认为这可能与send在主代码中使用有关,但无法弄清楚原因。任何人都可以帮忙吗?

python yield generator send

5
推荐指数
1
解决办法
218
查看次数

python如何在子类中启动一个值?

我有以下代码:

class Vehicle:
    def __init__(self, name=None, color='Red', make='Toyota'):
        self._name = name 
        self._color = color
        self._make = make

    @property
    def name(self):
        if self._name is None:
            return 'name is none'
        return self._name

    @name.setter
    def name(self, value):
        self._name=value   

    def getColor(self):
        return self._color

    def getMake(self):
        return self._make    

class Car(Vehicle):
    def __init__(self, mode='Running', *args, **kwargs):
        super().__init__(self,  *args, **kwargs)
        self._mode=mode

    def getMode(self):
        return self._mode
Run Code Online (Sandbox Code Playgroud)

我想启动汽车的名称,但是以下都不起作用。有没有简单的方法来做到这一点?

mycar=Car('Corolla')
mycar=Car(name='Corolla')
Run Code Online (Sandbox Code Playgroud)

python inheritance subclass init args

0
推荐指数
1
解决办法
33
查看次数

标签 统计

python ×2

args ×1

generator ×1

inheritance ×1

init ×1

send ×1

subclass ×1

yield ×1