54280


例えば、以下のような NamedTuple があったとします。

[code]

    from typing import NamedTuple
    
    class Enemy(NamedTuple):
      name: str
      power: int
      defense: int
    
    slime = Enemy(name='slime', power=1, defense=1)
    
[/code]

このとき、 slime から defense を １０倍にした rare_slime を作ろうとしたとき、効率良い方法は何でしょうか？ NamedTuple
は、基本 immutable (value object) であるので、単にコピー・代入するのはうまくいかなさそうなので、質問しています。


CC BY-SA 4.0
2019-04-18T07:04:38.390
54275
2019-04-18T07:52:45.937
754
question
python python3
python の NamedTuple で一部のフィールドだけ変更した値を作成したい


的はずれな回答であればすみません。メソッド `_replace()` がよいのではないかと思いますが、 `_replace()` 以外で探されていますか？

[code]

    rare_slime = slime._replace(defense=slime.defense * 10)
    
[/code]

あるいは、 `_replace()` よりも速いものがあるのではないか、というご質問でしょうか。いかがでしょう。

参考:

  * <https://docs.python.org/3/library/collections.html#collections.somenamedtuple._replace>


CC BY-SA 4.0
2019-04-18T07:52:45.937
54280
2019-04-18T07:52:45.937
28632
54275
answer