Использование переменной «которая находится в классе» на другой странице в Python

#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__() метод.

Есть три разных способа (с моей точки зрения), которыми вы можете это сделать, ранжированные в порядке моей личной рекомендации:

  1. Создайте smallwavesincurrency объект, затем вызовите usdcurrency() метод
 from filename import smallwavesincurrency

class something:
     def __init__(self):
        self.swic = smallwavesincurrency(username, userpassword, url)
        usdfromanotherpage = self.swic.usdcurrency()
 
  1. Вызовите метод __init__() и usdcurrency() одновременно.
 from filename import smallwavesincurrency

class something:
     def __init__(self):
        usdfromanotherpage = smallwavesincurrency(
            username, userpassword, url
        ).usdcurrency()
 
  1. Передайте 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. Если бы я изменил его как статический метод, как вы сказали, было бы лучше. Поэтому я меняю его. Спасибо вам за вашу помощь.