2014-02-19 2 views
0

이 내가 클래스를 정의하고 어떻게 :클래스 이름 바로 뒤에 괄호로 들어가야 할 매개 변수는 무엇입니까?

클래스를 정의 할 때 따라서, 매개 변수가 초기화 전달되는
class Foo(): 
    def __init__(self, a, b): 
     self.a = a 
     self.b = b 

즉시 __init__ 방법 후 괄호에 있습니다.

제 질문은 클래스의 이름 바로 뒤에있는 괄호 Foo 다음에 괄호가 있어야합니다.

주변을 둘러 보았지만, 지금까지 찾을 수 있었던 모든 것들은 실제로는 대괄호에 아무 것도 넣지 않았거나 을 넣었지만 이유를 설명하지 않았습니다.

미리 감사드립니다.

+1

수퍼 클래스 이름. * 상속에 대해 읽어보십시오. – Christian

답변

4

, 당신은 괄호 안에 Foo의 슈퍼 클래스를 지정할 수 있습니다 기본적으로

class Bar: pass 
class Foo(Bar): #Foo is subclass of Bar now 
    pass 

, Foo 어떤 클래스를 상속하지 않는 경우, 바로 () 생략 :

class Foo: #this creates old-style classes in python2, which is not suggested 
    .... 

일반적으로 우리는 object (in python2)에서 ou를 작성할 때 new-style classes을 생성합니다. 사용자 정의 클래스 :

class Foo(object): 
    .... 
+0

대괄호를 생략하는 defautl 경우는 Python 3에서만 유효합니다. Python 2에서는 "object"의 모든 클래스를 상속하거나 이상한 방식으로 오작동하는 위험이 있습니다. 'Class Bar (object) : pass' – jsbueno

+0

@jsbueno edited;) – zhangxaochen

+0

그래서 파이썬 2에서는 상속이 불가능 했나요? – xander

1

클래스 이름 다음에 괄호로 들어가는 매개 변수는 상속 될 클래스의 이름입니다.

@Christian가 언급 한 바와 같이
class Parent: 
     pass 

    class Child(Parent): 
     pass 
관련 문제