0
# addmember.py

def addmember(memberlist, newmembers):
    if type(newmembers) not in (type([]), type(())):
        newmembers = [newmembers]
    for m in newmembers:
        if m not in memberlist:
            memberlist.append(m)
    return memberlist

最初に上記のpythonファイルを作成し、IDLEでロードします

 >>> members = ['a', 'b']
 >>> import addmember
 >>> addmember.addmember(members, 'c')

次に、以下のようなエラーアラート:

type(newmembers) が (type([]), type(())) にない場合:
TypeError: type() は 1 つまたは 3 つの引数を取ります

エラーの意味がわかりません。

前もって感謝します~~ :)

4

3 に答える 3

6

欲しいらしい

if not isinstance(newmembers, (list, tuple)):

を参照してくださいisinstance()

type()比較は継承を無視するため、一般にオブジェクトの互換性をチェックする方法としては不適切です。例えば:

>>> from collections import defaultdict
>>> d = defaultdict()
>>> type(d) == dict
False
>>> isinstance(d, dict)
True
于 2013-07-09T02:48:31.310 に答える
2

type()オブジェクトの型を確認するために使用しないでください。使用isinstance():

if not isinstance(newmembers, (list, tuple)):
    dostuff()

あなたのコードはそのエラーを再現すべきではありません. type() に引数を1つだけ渡しています.

于 2013-07-09T02:48:17.140 に答える