0

このような関数を定義するためにpython2.7を使用しています

def foo(*args, **kwargs):
    print 'args = ', args
    print 'kwargs = ', kwargs
    print '---------------------------------------'

foo(3) を呼び出すと、出力は次のようになります。

args =  (3,)
kwargs =  {}

これは望ましいことです。

しかし__init__、パラメーターが foo と同じ形式であるクラスの関数については、クラス Person を呼び出してインスタンス化することはできません。Person(3)

def Person():
    def __init__(self, *args, **kwargs):
        print args
        print kwargs
x = Person(3)

出力は

    x = Person(3)
TypeError: Person() takes no arguments (1 given)

それは私を大いに混乱させました、私は何かを見逃しましたか?

4

1 に答える 1

6

おそらく、関数の代わりにクラスを作成するつもりでした:

class Person():
    def __init__(self, *args, **kwargs):
        print args
        print kwargs

__init__クラス用です:)。

于 2013-09-07T06:43:54.053 に答える