#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)