def save_file(self, outputfilename = self.image_filename):
self.file.read(outputfilename)
....
은 첫 번째 줄에 NameError: name 'self' is not defined
이됩니다. 파이썬은 그것을 받아들이지 않는다. 예외를 발생시키지 않도록 코드를 다시 작성하려면 어떻게해야합니까?메서드의 기본값으로 self. * 사용
def save_file(self, outputfilename = self.image_filename):
self.file.read(outputfilename)
....
은 첫 번째 줄에 NameError: name 'self' is not defined
이됩니다. 파이썬은 그것을 받아들이지 않는다. 예외를 발생시키지 않도록 코드를 다시 작성하려면 어떻게해야합니까?메서드의 기본값으로 self. * 사용
기본값을 사용하여 None
을 감지합니다.
def save_file(self, outputfilename=None):
if outputfilename is None:
outputfilename = self.image_filename
self.file.read(outputfilename)
....
오도 된이 패턴의 문제점. – Nikolai
def save_file(self, outputfilename = None):
if not outputfilename:
outputfilename = self.image_filename
self.file.read(outputfilename)
....
documentation 상태 : 함수 정의 실행시
기본 파라미터 값이 평가된다.
이것은 인스턴스를 참조 할 수없는 이유를 설명합니다. 다른 사람들이 말한 것처럼 None을 기본값으로 사용하고 인스턴스가 사용 가능할 때 함수 실행 시간에 값을 수정합니다.
def save_file(self, outputfilename=None):
outputfilename = outputfilename or self.image_filename
self.file.read(outputfilename)
또는
def save_file(self, outputfilename=None):
self.file.read(outputfilename or self.image_filename)
이것은 하나 개의 변수에 아무것도하지만, 당신이있는 경우에,의는 5 말을 할 수 있습니다, 이것은 내 의견으로는, 읽기 쉽게 코드를 만든다.
함수 정의가 다른 범위에서 다른 시간에 발생합니다. –
작동하면 좋습니다. 코드를 훨씬 깔끔하게 만듭니다. 구현할 Pandoran Box를 열 것 같습니까? –