Простой вопрос про классы
подскажите в чем ошибка? Почему self не определен?
class mono(object):
"""docstring"""
def __init__():
self.url, self.headers, self.session = login()
def login():
self.url = '12345'
self.headers = '12345'
session = '12345'
return self.url, self.headers, self.session
def get_df_1(self, url=self.url, headers=self.headers, session=self.session):
print(self.url)
print(self.headers)
print(self.session)
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Тут def __init__(): и тут def login(): нет аргумента self.
Вообще, во все методы нужно self писать. Есть 2 исключения:
- Статичные методы. Для них к методам добавляется декоратор staticmethod
- Методы класса. Для них к методам добавляется декоратор classmethod и вместо
selfиспользуетсяcls
Нельзя в значениях по-умолчанию указывать self самого класса, это вещь доступна только внутри методов:
def get_df_1(self, url=self.url, headers=self.headers, session=self.session):
Можно сделать так, тогда если какие-либо параметры не будут заданы, будут использоваться поля объекта:
def get_df_1(self, url=None, headers=None, session=None):
if not url:
url = self.url
if not headers:
headers = self.headers
if not session:
session = self.session
print(url)
print(headers)
print(session)
Вариант без параметров, просто используем поля объекта:
def get_df_1(self):
print(self.url)
print(self.headers)
print(self.session)
