Оценка кода с точки зрения ООП
Для практики начальных знаний по ООП, решил написать для тренировки небольшую модель управления ТВ с двумя видами канального плана - глобальным(для всех будущих экземпляров) и локальным(личные каналы у каждого экземпляра). Так как критично отношусь к процессу обучения и стараюсь корректировать свой код, как только вижу некрасивые моменты или костели, хотел бы дать вам мою работу для оценки и рекомендаций, правильно ли в самом коде использована стратегия с изменением канального плана, переключением канала и изменением громкости. Возможно, это можно всё было сделать гораздо лаконичнее?
class Televisor:
channels=('MTV','Bridge TV','CNN','France 24') # Список общих каналов (глобальный)
def __init__(self):
self.__channel=1
self.__volume=1
self.__myChannelList=self.channels # Инициализирую новый список каналов, который будет у каждого ТВ свой
def sync(self): # После добавления глобального канала, нужно сделать синхронизацию на каждом ТВ, чтобы в личном
# списке появился этот канал.
for each in self.channels:
if each not in self.__myChannelList:
self.__myChannelList+=(each,)
return self.__myChannelList
def addLocalChannel(self, newChannel): #Индивидуальные каналы для каждого ТВ
self.__myChannelList+=(newChannel,)
@classmethod # Добавление общих каналов
def addGlobalChannel(cls,newChannel):
cls.channels+=(newChannel,)
#------------------------------------------------- Смена текущего канала через сеттер
@property
def channel(self):
return self.__channel
@channel.setter
def channel(self,setChannel):
if 0<=setChannel<=len(self.__myChannelList)-1:
self.__channel=setChannel
print('Канал успешно изменен на', self.__myChannelList[setChannel])
else:
print('Такого канала нет в списке')
#---------------------------------------------------
def volChange(self,param):
if param=='+':
if 0<=self.__volume<5:
self.__volume+=1
print('Уровень громкости {}/5'.format(self.__volume))
else:
print('Максимальная громкость')
elif param=='-':
if 0<self.__volume<=5:
self.__volume-=1
print('Уровень громкости {}/5'.format(self.__volume))
else:
print('Минимальная громкость')
tel1=Televisor()
tel1.channel=3
tel1.volChange('+')
Televisor.addGlobalChannel('NewGlobalChannel')
tel1.sync() #без вызова этого метода новый глобальный канал не появится в кан.плане экземпляра
tel1.channel=4
tel1.addLocalChannel('NewLocalChannel')
tel1.channel=5