Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Dúvida sore Orientação Objeto no Python.

Bom dia a todos. Estou nesse momento com dificuldade de realizar um projetinho de orientação objeto com Python. #Classe TV: Faça um programa que simule um televisor criando-o como um objeto. #O usuário deve ser capaz de informar o número do canal e aumentar ou diminuir o volume. #Certifique-se de que o número do canal e o nível do volume permanecem dentro de faixas válidas. Criei dois arquivos, um deles chamado Main e outro Chanels(Vulgo classes).

Main:

from chanels import Television

def Tv_On(): tv_on = True

while tv_on:
    print("HOME Para acessar os canais, UPPER ou DOWN para alterar o volume")
    escolha = input("HOME / UPPER / DOWN:::")

    if escolha == "home":
        Television.chanel_switch_op()

Tv_On()

*chanels:


#Classe TV: Faça um programa que simule um televisor criando-o como um objeto. #O usuário deve ser capaz de informar o número do canal e aumentar ou diminuir o volume. #Certifique-se de que o número do canal e o nível do volume permanecem dentro de faixas válidas.

class Tv_chanels:

def __init__(self, chanel):
    self._chanel = chanel

@property
def chanel_list_get (self):
    return self._chanel

def chanel_list (self):
    self.chanel_list = Tv_chanels (range(1,300))

class Tv_volume:

def __init__(self, volume):
    self._volume = volume

@property
def volume_get(self):
    return self._volume

def upper(self):
    self._volume += 1
    self._volume = max(self._volume, 100)

def down(self):
    self._volume -= 1
    self._volume = min(self._volume, 0)

class Television():

def __init__(self, chanel_switch, volume_switch):
    self._chanel_switch = chanel_switch
    self._volume_switch = volume_switch


def chanel_switch_op (self):
    return self._chanel_switch

.

Ao tentar acessar a classe chanel_switch_op recebo como retorno do console:

TypeError: Television.chanel_switch_op() missing 1 required positional argument: 'self'

Meu objetivo final é acessar a função que conterá o INPUT com as informações referentes a lista do canal. Mas sequer estou conseguindo acessar o getter(teste).

2 respostas
solução!

Oi Gabriel, tudo bem?

O erro que você está recebendo indica que você está tentando chamar o método chanel_switch_op da classe Television sem criar uma instância da classe primeiro. Em Python, métodos de instância devem ser chamados em uma instância da classe, não na própria classe.

Para corrigir o erro, você precisa criar uma instância da classe Television antes de chamar o método chanel_switch_op.

Main:

from chanels import Television

def Tv_On():
    tv = Television()  # Criando uma instância da classe Television

    while True:
        print("HOME Para acessar os canais, UPPER ou DOWN para alterar o volume")
        escolha = input("HOME / UPPER / DOWN:::")

        if escolha.lower() == "home":
            tv.chanel_switch_op()  # Chamando o método na instância

Tv_On()

chanels:

class Television:
    def __init__(self):
        self.chanels = ChanelList()
        self.volume = TvVolume()

    def chanel_switch_op(self):
        # Aqui você pode implementar a lógica para acessar a lista de canais
        # e realizar as operações desejadas.

class ChanelList:
    def __init__(self):
        self.chanels = list(range(1, 301))

class TvVolume:
    def __init__(self):
        self.volume = 0

    def upper(self):
        self.volume += 1
        self.volume = min(self.volume, 100)

    def down(self):
        self.volume -= 1
        self.volume = max(self.volume, 0)

Observe que fiz algumas alterações no código. Adicionei as classes ChanelList e TvVolume para representar a lista de canais e o controle de volume, respectivamente. Essas classes podem ser instanciadas dentro da classe Television. Dessa forma, você tem uma estrutura mais modular e organizada para o seu projeto.

Isso é uma ideia e você pode adaptar para o seu código e deixar como você quer.

Um abraço e bons estudos.

Resolveu. Obrigado !