2014-01-31 2 views
0

Привет, я хочу импортировать класс из другого файла в python, все работает, но класс, который я хочу импортировать, получает аргумент командной строки. После того, как я импортирую (что успешно), как я могу предоставить аргумент командной строки в классе? (Сторона: примечание это суперкласс или что-то ИДК, что это значит?)Импорт класса из другой проблемы с файлом python

#class I'm importing 
class trend: 

def __init__(self): 
    self.user_name = sys.argv[1] #receives commandline argument 

_______________________________________________________________ 

#class I want to use it in 
class game: 

    def __init__(self): 
     self.twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET) 

    def do_something(self): 
     import filenameforthetrendclass as TC 
     game = TC.trend() #how do I bring in the commandline argument in here? 
+0

Вы должны переписать этот класс, потому что это очень плохой способ установить атрибут экземпляра. – roippi

+0

@roippi Да, это был мой план b, я пытаюсь изучить хорошие шаблоны дизайна. – user3255763

ответ

0

Это плохая идея использовать sys.argv где угодно, но на верхнем уровне (main, если у вас есть). Это то, что вы должны пройти.

Во-первых, перепишите Trend в качестве параметра его конструктору в качестве параметра user_name.

Быстрый пример только с Trend:

class Trend(object): 

    def __init__(self, user_name): 
     self.user_name = user_name 

trend = Trend(sys.argv[1]) 

Теперь интегрируя всю концепцию:

import sys 
from filenameforthetrendclass import Trend 

class Game(object): 

    def __init__(self): 
     self.twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET) 

    def do_something(self, user_name): 
     a_trend = Trend(user_name)  # was originally 'game = ' 


def main(): 
    game = Game() 
    game.do_something(sys.argv[1]) 

Примечания:

  • Я использую прописные имена классов
  • I 'm de конечно, не имеющий класса с именем game, а затем используя game в качестве локальной переменной.
Смежные вопросы