pythonでインスタンス変数を自動で代入(?)する方法はありますか？


Pythonで引数をインスタンス変数に代入する場合、以下の様な記述になると思いますが、このインスタンス変数の代入が冗長な感じがします。

この `self.x=x` を何行も書かないといけないのを省略する方法はありませんでしょうか？

[code]

    class hoge:
        def __init__(self,a,b,c,d,・・・)
            self.a=a
            self.b=b
            self.c=c
            ・
            ・
            ・
    
[/code]




`self.name = name` のような記述を毎行記すのが大変という意味なら, [dataclasses ---
データクラス](https://docs.python.org/ja/3/library/dataclasses.html) があります

(記述例)

[code]

    from dataclasses import dataclass
    
    @dataclass
    class InventoryItem:
        """Class for keeping track of an item in inventory."""
        name: str
        unit_price: float
        quantity_on_hand: int = 0
    
        def total_cost(self) -> float:
            return self.unit_price * self.quantity_on_hand
    
[/code]

また `dataclasses.make_dataclass`もあり一行で記すことも可能らしいけど見やすいとは思えず  
たぶん, 別の目的のものだと思えます。

質問の意図が, 行が長すぎるという意味なら, クラスの設計に問題があるように思えます




`self.name = name` のような記述を毎行記すのが大変という意味なら, [dataclasses ---
データクラス](https://docs.python.org/ja/3/library/dataclasses.html) があります

(記述例)

[code]

    from dataclasses import dataclass
    
    @dataclass
    class InventoryItem:
        """Class for keeping track of an item in inventory."""
        name: str
        unit_price: float
        quantity_on_hand: int = 0
    
        def total_cost(self) -> float:
            return self.unit_price * self.quantity_on_hand
    
[/code]

また `dataclasses.make_dataclass`もあり一行で記すことも可能らしいけど見やすいとは思えず  
たぶん, 別の目的のものだと思えます。

質問の意図が, 行が長すぎるという意味なら, クラスの設計に問題があるように思えます

