2017-08-27 5 views
0

メインの「チャット」クラスからその属性の一部を継承する「グループチャット」クラスを作成しようとしています。 "super(chat_id、user1)。init()"の行にエラーが表示されます。私はそれを修正することができません!TypeError:super()引数1はint型でなくてはなりません(Python)

class Chats(object): 

def __init__(self, chat_id, user1): 
    self.id = chat_id 
    self.initiator = user1 
    self.messages = {} #key is current date/time; value is a list of messages 


class GroupMessage(Chats): 

def __init__(self, chat_id, user1, group_name, message): 
    super(chat_id, user1).__init__() 
    self.group = group 
    self.messages[datetime.datetime.now()] = self.messages[datetime.datetime.now()].append(message) 

「GroupMessage」をインスタンス化すると、エラーが発生します。

> Chat_group = GroupMessage(1, "Batool","AI_group","Text Message") 

はTypeError:スーパー()の引数1は、型であなたがやるべきsuper(chat_id, user1).__init__()の代わりに行う必要があります

+0

まあ、言われているように、整数ではなく最初の引数として型を渡す必要があります。 [ドキュメント](https://docs.python.org/3/library/functions.html#super)を読んだことがありますか? – kindall

+2

これはどうしたのですか?super().__ init __(chat_id、user1) ' – alfasin

+0

@alfasin、私は最初にこの方法を行っていましたが、このエラーが出ました:TypeError:super()少なくとも1つの引数(与えられた0)をとります。 – Batool

答えて

3

をint型ではない必要があります。

super().__init__(chat_id, user1) # Work in Python 3.6 
super(GroupMessage, self).__init__(chat_id, user1) # Work in Python 2.7 

または

Chats.__init__(self, chat_id, user1) 

このクラス階層が将来変更される場合は、最後のオプションは推奨されません。私は本当に他の動機のためにそれを好きではないが、それでも言及する価値がある。

+0

もう1つは私の2.7で働いた! :) – Batool

関連する問題