У меня возникают некоторые проблемы, когда всякий раз, когда я выполняю вызов одного из моих методов классов, мне требуется специально отправлять содержащий класс вместе с вызовом, где я ожидаю, что он уже знает об этом сам.Я уверен, что это ошибка пользователя, но не могу отследить ее.
Я ссылался на python - самообязательный позиционный аргумент но я думаю, что у меня есть это.
class SpeechEngine():
def __init__(self):
self.conn = sqlite3.connect('../twbot.db')
self.c = self.conn.cursor()
@staticmethod
def choose(choice):
num_choices = len(choice)
selection = random.randrange(0, num_choices)
return selection
def initial_contact_msg(self, userId, screenName):
hello = self.c.execute("SELECT text, id FROM speechConstructs WHERE type='salutation'").fetchall()
tagline = self.c.execute("SELECT text, id FROM speechConstructs WHERE type='tagline'").fetchall()
c1 = self.choose(hello)
c2 = self.choose(tagline)
msg_string = str(hello[c1][0]) + ' @' + screenName + ' ' + tagline[c2][0]
# print(msg_string) # For Testing Only
# print(hello[c1][1]) # For Testing Only
return msg_string
И тогда я ожидал бы позвонить
SpeechEngine.initial_contact_msg(0, 'somename')
Но это возвращает следующее
missing 1 required positional argument: 'self'
Где, как будто я делаю это неявно
SpeechEngine.initial_contact_msg(SpeechEngine, 0, 'somename')
Возвращает ожидаемые результаты без вопросов.Я также должен отметить, что то же самое происходит, когда я назначил бы его следующим образом.
test = SpeechEngine
test.initial_contact_msg(0, 'somename')