#python #function #class #oop
Вопрос:
Я новичок в программировании. Поэтому, чтобы улучшить себя, я пытаюсь что-то создать. Поэтому мой вопрос таков:
class smallwavesincurrency:
def __init__(self,username,userpassowrd,url):
self.username = username
self.userpasword = userpassword
self.url = url
self.usd = self.usdcurrency()
def usdcurrency(self):
#There is beautifulsoup process here. I did not put them to avoid infollution#
return usd #End of the function I return that variable.
Я могу использовать переменную как «self.usd» в своем классе без каких-либо проблем, и это работает.
Но мне нужно импортировать его на другую страницу в классе.
Я попробовал это:
#This codes were written in another page:
from filename import smallwavesincurrency
class something:
def __init__(self):
usdfromanotherpage = smallwavesincurrency.usdcurrency()
Когда я хочу его использовать, я получаю ошибку «в валюте usdcurrency отсутствует 1 требуемый позиционный аргумент: ‘self'».
Если вы поможете мне, я буду признателен.
Mercii
Комментарии:
1. Пожалуйста, обновите отступ в вашем коде. Python очень чувствителен к отступам, как и программисты на python.
2. Спасибо вам 🙂 Я тоже здесь новичок. Я еще не мог привыкнуть к stackoverflow :). Но моя проблема возникает не из — за отступа
3. Но без правильного отступа мы не можем этого сказать. Мне отредактировать ваш вопрос для вас?
4. Спасибо. Я попытался отредактировать его. Если вы видите какие-либо проблемы. Пожалуйста, отредактируйте 🙂
5. Итак
usdcurrency()
, использует ли методusername
password
атрибуты и?
Ответ №1:
Поскольку usdcurrency()
это метод экземпляра, вам нужно вызвать метод для объекта, в данном случае smallwavesincurrency
объекта. Таким образом, вам придется сначала вызвать __init__()
метод.
Есть три разных способа (с моей точки зрения), которыми вы можете это сделать, ранжированные в порядке моей личной рекомендации:
- Создайте
smallwavesincurrency
объект, затем вызовитеusdcurrency()
метод
from filename import smallwavesincurrency
class something:
def __init__(self):
self.swic = smallwavesincurrency(username, userpassword, url)
usdfromanotherpage = self.swic.usdcurrency()
- Вызовите метод
__init__()
иusdcurrency()
одновременно.
from filename import smallwavesincurrency
class something:
def __init__(self):
usdfromanotherpage = smallwavesincurrency(
username, userpassword, url
).usdcurrency()
- Передайте
smallwavesincurrency
объектusdcurrency()
методу.
from filename import smallwavesincurrency
class something:
def __init__(self):
usdfromanotherpage = smallwavesincurrency.usdcurrency(
smallwavesincurrency(username, userpassword, url)
)
Комментарии:
1. кстати, вы создаете экземпляры
smallwavesincurrency
без указания необходимых параметров.2. @quamrana Я сделал это специально, потому что я предполагаю, что предоставление аргументов подразумевается, но я отредактирую его, просто на всякий случай.
Ответ №2:
Возможно, это может стать статическим методом?
class smallwavesincurrency:
def __init__(self, username, userpassowrd, url):
self.username = username
self.userpasword = userpassword
self.url = url
self.usd = self.usdcurrency()
@staticmethod
def usdcurrency():
#There is beautifulsoup process here. I did not put them to avoid infollution#
return usd #End of the function I return that variable.
Комментарии:
1. Нет, это не так. Когда я пытался использовать staticmethod, я не мог использовать некоторые функции, которые исходят из других методов
2. Итак, могут ли эти методы также стать статичными?
3. На самом деле все они связаны друг с другом. Класс подключает веб-сайт, и веб-сайт имеет свою собственную валюту. Итак, сначала он получает валюту, затем я соскребаю некоторую информацию, и другой метод вычисляет их по валюте и информации, которая была соскоблена. Таким образом, каждый метод имеет свою собственную функцию.
4. Хорошо, так что же произошло, когда вы сделали их все статичными?
5. Если бы я изменил его как статический метод, как вы сказали, было бы лучше. Поэтому я меняю его. Спасибо вам за вашу помощь.