class a:
class __b__(object):
print 'bbb'
b=a()
b.__b__()
b.__b__()
b.__b__()
a.__b__()
a.__b__()
a.__b__()
이 'BBB'를 인쇄 한 번만, 감사한 번, 그것은 실행되지 않습니다 잘못 예기치 않게
class a:
class __b__(object):
print 'bbb'
b=a()
b.__b__()
b.__b__()
b.__b__()
a.__b__()
a.__b__()
a.__b__()
이 'BBB'를 인쇄 한 번만, 감사한 번, 그것은 실행되지 않습니다 잘못 예기치 않게
class __b__
문은 정확히 한 번 실행됩니다 (class a
문이 실행될 때). 이것은 사용자가 print
int 일 경우에만 해당됩니다. 다양한 인스턴스 생성은 완전히 관련이 없습니다 (아무도 print
과 아무 관련이 없습니다).
당신은 당신이 뭘 하려는지 설명하지 않지만, 난 당신이 무슨 뜻인지 생각하는 것은 :
class a:
def __b__(object):
print 'bbb'
...
코드를 호출 할 때마다 코드를 실행하려면 코드를 __init__
메서드 (생성자)에 넣어야합니다.
class a:
class b:
def __init__(self):
print 'bbb'
a.b()
a.b()
그러면 bbb
2x가 인쇄됩니다. class b
은 단순히 class a
의 속성이기 때문에 a.b
에 액세스하려면 a()
의 인스턴스가 필요하지 않습니다. 파이썬으로 클래스를 중첩하면 실제로 많은 이득을 얻지 못합니다.
파이썬은 이중 밑줄로 시작하고 끝나는 단어를 예약하기 때문에 __b__
을 사용하지 않았습니다.
그냥 메모; 파이썬 2.x를 사용하고 있다면, print는 함수가 아니기 때문에 괄호를 추가하면 이상한 결과가 나올 수 있습니다. –
왜 아래 표를 얻습니까? 이것은 질문이 묻는 것일 수 있습니다. 얼마나 자주 파이썬에서 서브 클래스를 사용합니까? –