파이썬 클래스 속성과 인스턴스 속성에 대해 연구하면서 객체 메소드 외부에 객체 속성을 생성 할 수 없다는 사실을 알게되었습니다 (또는 클래스 메소드 일 수도 있음). 아래의 코드는 파이썬에서 "NameError"를 생성합니다.왜 개체 메서드 외부에서 개체 특성을 만들 수 없습니까?
class test(object):
def __init__(self):
self.lst = []
self.str = 'xyz'
왜 파이썬이 허용하지 않는가? 나는 언어 제작자의 결정에 의문을 품지는 않지만 이것에 대한 이유는 무엇인가. 마찬가지로 기술적으로 부정확하거나이 동작의 다른 단점이 있습니다.
클래스가 호출되기 전에 또는 함수의 실수가 프로그램에 영향을주지 않는 함수와 달리 해당 클래스가 호출되기 전에 인터프리터에 의해 구문 분석된다는 의미입니까? – Alinwndrld
@Alinwndrld : 인터프리터는 class 객체를 찾으면 클래스 객체를 생성합니다. 참조 할 클래스 본문에'print'를 추가하십시오. 클래스도 객체입니다. 당신은'test' 클래스를 넘겨 줄 수 있고, 그 안에 정의 된 속성을 참조 할 수 있습니다. 파이썬이 그렇게 할 수 있으려면 먼저 클래스 본문을 실행하여 클래스 객체를 생성해야합니다. –