Saya sedang menulis beberapa kode yang mengambil nama file, membuka file, dan mem-parsing beberapa data. Saya ingin melakukan ini di kelas. Kode berikut berfungsi:
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()
Tapi itu melibatkan saya menempatkan semua mesin parsing dalam lingkup __init__
fungsi untuk kelas saya. Itu terlihat bagus sekarang untuk kode yang disederhanakan ini, tetapi fungsinya parse_file
memiliki beberapa level indention juga. Saya lebih suka mendefinisikan fungsi parse_file()
sebagai fungsi kelas seperti di bawah ini:
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
Tentu saja kode ini tidak berfungsi karena fungsinya parse_file()
tidak dalam cakupan __init__
fungsi. Apakah ada cara untuk memanggil fungsi kelas dari dalam __init__
kelas itu? Atau apakah saya memikirkan hal ini dengan cara yang salah?