🐍

【python】関数の引数が指定なしならクラス内のデフォルトを使いたい

2022/03/10に公開

pythonで関数の引数を指定したらその値を入れたいけど、特に指定していない時にはクラスinit時の変数を入れたいと思ったので、方法を書いておきます。

まず、クラスのinit関数の引数でデフォルトを設定したいものに対してデフォルト引数を指定。
使用したい関数の引数でデフォルトを指定したい引数をデフォルト値をNoneに指定。
関数内でinit関数で指定したデフォルトの値と、関数の引数の値を『or』で繋ぐ。

これだけでした。

class User(object):
  def __init__(self, name, email, encode='utf-8'):
    self.name = name
    self.email = email
    self.default_encode = encode

  // この関数でencodeが与えられたら引数を使う、指定なしならinit関数ないのデフォルトを使うようにしたい
  def change_user_name(self, name, encode=None)
    encode = encode or self.default_encode
    // 具体的な処理は割愛
    

Discussion