Так что это довольно понятно.Странное поведение в моем классе Python
class Tray(object):
'''
A class used to collect information about each unique tray
'''
def __init__(self):
self.cycle = None
self.cell = None
self.bIsTilted = False # Assume trays are not tilted
self.bSendNoData = False # Assume data is sent, modified later if data not sent
self.trayData = (self.cycle,
self.cell,
self.bIsTilted,
self.bSendNoData)
def __repr__(self):
return str(self.trayData)
def setCycle(self, cycle):
self.cycle = cycle
def setCell(self, cell):
self.cell = cell
Если я бегу следующие утверждения:
currentTray = Tray()
currentTray.setCycle(250)
currentTray.setCell(300)
print(currentTray)
currentTray.setCell(25)
print(currentTray.cell)
мой выход будет:
(None, None, False, False)
25
Итак, я предполагаю, что я пытаюсь выяснить, почему мой self.trayData ISN обновляясь по значениям в self.cycle, self.cell и т. д. В чем проблема?
В Python, вы обычно не определяете '' setCycle' и setCell' (который был бы более правильно будет называться 'set_cycle' и 'set_cell', случай верблюда условно зарезервирован для имен классов), вместо этого позволяя пользователю просто устанавливать значения самих атрибутов. – chepner
Вы правы в том, что мое соглашение об именах отключено.Но я определенно где-то читал, что, поскольку Python не позволяет технически разрешать «частные/общедоступные» переменные, это по-прежнему правильный подход к написанию аксессуаров для ваших переменных. – Asif
@Asif: Nope. Вы просто позволяете конечному пользователю изменять вещи напрямую. Если позже вам понадобится инкапсуляция, вы создадите свойство, подобное шоу Ананда. Свойства можно записывать, а также читать. – Kevin