2013-09-07 2 views
0
나는이

왜 파이썬 __init__

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

같은 함수를 정의 할 python2.7를 사용하고

와 foo를 호출하여 (3), 출력은 실패 :

args = (3,) 
kwargs = {} 

원하는 것입니다.

하지만 파라미터 푸 같은 형태되어있는 클래스 __init__ 함수로서, I는 출력

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

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

를 호출하는 클래스 사람 instantize 없다

그게 많이 혼란스러워, 내가 놓친 게 있니?

+0

[개체 지향 파이썬에서 변수 및 함수 액세스 - python] (http://stackoverflow.com/questions/18610378/accessing-variable-and-functions-in-object-oriented-python-python) –

답변

6

당신은 아마 클래스 대신 기능를 만드는 의미 :

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

__init__ 클래스입니다 :).

+0

그렇다면 클래스의 생성 함수에 * args와 ** kwargs를 어떻게 사용할 수 있습니까? 처음에는 클래스 내에서 초기화 함수를 오버로드하려고하지만 파이썬은 해당 기능을 지원하지 않습니다. 원하는 전화 번호는 다음과 같습니다. a = 사람 (이름 = "xxx") b = 사람 (나이 = 16) – speedmancs

+3

@speedmancs : 실수로 사용하지 않은 경우를 제외하고 코드에서와 똑같은 방식으로 수행합니다 당신이'클래스'를 의미했던 곳에서'def'. – user2357112

+0

고마워요. 정말 실수를 저질 렀습니다. :) – speedmancs