Я пытаюсь понять наследование классов, перефразируя чужой код, который выглядит следующим образом. В моем понимании наследования путем создания экземпляра класса View у меня есть доступ ко всем методам в доступном для записи классе. Кажется, что это правда.
Когда я устанавливаю setFolder из доступного для записи класса, я знаю, что self.outputFolder имеет значение, потому что в моем классе View я могу вызвать returnFolderView и получить значение из self.outputFolder.
Однако, когда я возвращаю self.path в функцию returnPath, я вместо этого получаю условие else в функции инициализации View. Я не понимаю, почему это происходит.
Я ожидал бы, что self.outputFolder + self.fileName и т. Д., То есть условие if будет истинным.
Это порядок операций? Любая помощь очень ценится.
OUTPUT_DIR = ''
class writeable():
def __init__(self, *args, **kwargs):
self.fileName = 'writeFile'
self.outputFolder = kwargs.get('output_dir',OUTPUT_DIR)
if self.outputFolder:
self.path = self.outputFolder + self.fileName if self.outputFolder.endswith('/') else self.outputFolder + '/' + self.fileName
else:
self.path = self.fileName
# super(writeable, self).__init__(self, *args, **kwargs)
def setFolder(self,folder):
self.outputFolder = folder
return self
def returnFolder(self):
return self.outputFolder
class View(writeable):
def __init__(self, *args, **kwargs):
super(View, self).__init__(self, *args, **kwargs)
self.fileName = 'viewFile'
if self.outputFolder:
self.path = self.outputFolder + self.fileName if self.outputFolder.endswith('/') else self.outputFolder + '/' + self.fileName
else:
self.path = self.fileName
def returnFolderView(self):
if self.outputFolder:
return self.outputFolder
else:
print('Failure')
def returnPath(self):
return self.path
a = View()
a.setFolder('freddie')
print(a.returnFolderView())
print(a.returnPath())