Как я должен переопределить значение по умолчанию в методе __init__ в python?

#python

#python

Вопрос:

 class GoogleAuth(ApiAttributeMixin, object):
    def __init__(self, settings_file='settings.yaml',http_timeout=None):
  

здесь я хочу изменить значение по умолчанию для settings_file на свой собственный путь

Комментарии:

1. Неясно, о чем вы спрашиваете. Для другого значения по умолчанию измените то, на что оно установлено в определении __init__() . Вы можете переопределить значение по умолчанию при вызове функции, указав имя аргумента ключевого слова и другое значение: т.е. ga = GoogleAuth(settings_file='my_settings.yaml')

2. @Annadurai не могли бы вы предоставить код ApiAttributeMixin? (только код __init__ )

Ответ №1:

Вы можете назначить новый путь в определении.

 class GoogleAuth(ApiAttributeMixin, object):
    def __init__(self, settings_file='settings.yaml',http_timeout=None):
       settings_file = '/var/myfile.yaml'
  

Комментарии:

1. класс GoogleAuth(ApiAttributeMixin, object): def init__(self, settings_file=’настройки.yaml’,http_timeout= Нет): settings_file = ‘/var/myfile.yaml’ супер(GoogleAuth, self). __init__(settings_file = settings_file,http_timeout= None) GoogleAuth.__init = GoogleAuth кошка может переопределить его. @Mayur

2. ga=GoogleAuth(settings_file='another.yaml') будет вести себя совершенно неожиданно!

3. @Annadurai Не могли бы вы, пожалуйста, более четко рассказать о проблеме, с которой вы столкнулись?

Ответ №2:

Итак, один из ваших классов унаследован от другого. И когда мы говорим о значении по умолчанию в __init__ — это означает значение, которое будет использоваться, когда не было указано конкретное значение. Например:

 google_auth = GoogleAuth()  # default value for `settings_file` will be used
google_auth = GoogleAuth(http_timeout=23)  # default value for `settings_file` will be used
google_auth = GoogleAuth(settings_file='specific_one.yaml')  # specified one will be used instead of default
...
  

И, скорее всего, ваш базовый класс ApiAttributeMixin имеет свое собственное значение по умолчанию для settings_file параметра. Итак, вы хотите переопределить это значение по умолчанию другим для вашего подкласса GoogleAuth .

Допустим, вы хотите, чтобы google_settings.yaml в качестве параметра по умолчанию для settings_file в вашем GoogleAuth классе. Код будет выглядеть следующим образом:

 class ApiAttributeMixin(object):

    def __init__(self, settings_file='settings.yaml', http_timeout=None):
        pass


class GoogleAuth(ApiAttributeMixin, object):

    def __init__(self, settings_file='google_settings.yaml', http_timeout=None):
        super(GoogleAuth, self).__init__(settings_file, http_timeout)