__init__ 내의 클래스 함수를 호출합니다.
파일명을 가져와서 파일을 열고 데이터를 파싱하는 코드를 쓰고 있어요.수업시간에 이걸 하고 싶어요.다음 코드가 작동합니다.
class MyClass():
def __init__(self, filename):
self.filename = filename
self.stat1 = None
self.stat2 = None
self.stat3 = None
self.stat4 = None
self.stat5 = None
def parse_file():
#do some parsing
self.stat1 = result_from_parse1
self.stat2 = result_from_parse2
self.stat3 = result_from_parse3
self.stat4 = result_from_parse4
self.stat5 = result_from_parse5
parse_file()
하지만 그건 내가 모든 파싱 기계들을 그 범위에 넣어야 한다.__init__
우리 반에서 기능합니다.이 단순화된 코드로는 괜찮은 것 같지만, 함수는parse_file
상당히 많은 수준의 지시도 가지고 있습니다.이 함수의 정의를 원합니다.parse_file()
다음과 같은 클래스 함수로 지정됩니다.
class MyClass():
def __init__(self, filename):
self.filename = filename
self.stat1 = None
self.stat2 = None
self.stat3 = None
self.stat4 = None
self.stat5 = None
parse_file()
def parse_file():
#do some parsing
self.stat1 = result_from_parse1
self.stat2 = result_from_parse2
self.stat3 = result_from_parse3
self.stat4 = result_from_parse4
self.stat5 = result_from_parse5
물론 이 코드는 작동하지 않습니다. 왜냐하면 함수는parse_file()
의 범위에 포함되지 않습니다.__init__
기능.내부에서 클래스 함수를 호출하는 방법이 있습니까?__init__
그 반의?아니면 제가 잘못 생각하고 있는 걸까요?
함수를 호출하는 방법은 다음과 같습니다.
self.parse_file()
또, 이 명령어의 정의해야 합니다.parse_file()
다음과 같이 기능합니다.
def parse_file(self):
그parse_file
메서드는 정적 메서드가 아니기 때문에 오브젝트를 호출할 때 오브젝트에 바인딩해야 합니다.이는 객체의 인스턴스에서 함수를 호출함으로써 이루어집니다.이 경우 인스턴스는self
.
두 기능 모두 클래스의 일부이므로 다음과 같이 사용해야 합니다.
class MyClass():
def __init__(self, filename):
self.filename = filename
self.stat1 = None
self.stat2 = None
self.stat3 = None
self.stat4 = None
self.stat5 = None
self.parse_file()
def parse_file(self):
#do some parsing
self.stat1 = result_from_parse1
self.stat2 = result_from_parse2
self.stat3 = result_from_parse3
self.stat4 = result_from_parse4
self.stat5 = result_from_parse5
행을 바꿉니다.
parse_file()
포함:
self.parse_file()
그럼 어떻게 해?
class MyClass(object):
def __init__(self, filename):
self.filename = filename
self.stats = parse_file(filename)
def parse_file(filename):
#do some parsing
return results_from_parse
참고로, 변수 이름이 다음과 같은 변수를 가지고 있다면stat1
,stat2
등, 상황은 태플을 필요로 하고 있습니다.stats = (...)
.
그럼...parse_file
태플을 반환하고 태플을 보관하다self.stats
.
그 후, 예를 들면, 이전에 호출되었던 것에 액세스 할 수 있습니다.stat3
와 함께self.stats[2]
.
다음과 같이 parse_file을 선언해야 합니다.def parse_file(self)
. "self" 파라미터는 대부분의 언어에서 숨겨진 파라미터이지만 python에서는 그렇지 않습니다.클래스에 속하는 모든 메서드의 정의에 추가해야 합니다.그런 다음 클래스 내의 모든 메서드에서 함수를 호출할 수 있습니다.self.parse_file
최종 프로그램은 다음과 같습니다.
class MyClass():
def __init__(self, filename):
self.filename = filename
self.stat1 = None
self.stat2 = None
self.stat3 = None
self.stat4 = None
self.stat5 = None
self.parse_file()
def parse_file(self):
#do some parsing
self.stat1 = result_from_parse1
self.stat2 = result_from_parse2
self.stat3 = result_from_parse3
self.stat4 = result_from_parse4
self.stat5 = result_from_parse5
인parse_file
, 를 선택합니다.self
인수(와 같이)__init__
기타 필요한 콘텍스트가 있는 경우 통상대로 추가 인수로 전달합니다.
당신의 문제는 실제로 init 함수를 올바르게 입력하지 않는 것이라고 생각합니다.이렇게 해야 한다
class MyClass():
def __init__(self, filename):
pass
def parse_file():
pass
언급URL : https://stackoverflow.com/questions/12646326/calling-a-class-function-inside-of-init
'programing' 카테고리의 다른 글
SQL Chemy 기본 Date Time (0) | 2022.09.05 |
---|---|
하나의 쿼리로 mysql 데이터를 일괄 업데이트하려면 어떻게 해야 합니까? (0) | 2022.09.05 |
java.io을 입수하려면 어떻게 해야 하나요?java.lang의 InputStream.스트링? (0) | 2022.09.05 |
urlib 및 python을 통한 사진 다운로드 (0) | 2022.09.05 |
PHP에서 @ 기호의 용도는 무엇입니까? (0) | 2022.09.05 |