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

"Veiculo" is not accessed Pylance

Eu defini as classes Veiculo, Carro e Moto

class Veiculo:
    def __init__(self, marca='', modelo=''):
        self.marca = marca
        self.modelo = modelo 
        self._ligado = False

    def __str__(self):
        ligado_desligado = 'ligado' if self._ligado else 'desligado'
        return f'O veículo da marca {self._marca}, modelo {self._modelo} está {ligado_desligado}'
from veiculo import Veiculo

def Carro(Veiculo):
    def __init__(self, marca, modelo, portas):
        super().__init__(marca, modelo)
        self._portas = portas

    def __str__(self):
        return f'{super.__str__(self)} e tem {self.portas} portas'
from carro import Carro
from moto import Moto

fusca = Carro('VW', 'Fusca', 2)

print(fusca)

Ao executar o main (código acima), recebo a mensagem Carro() takes 1 positional argument but 3 were given . E notei que em carro, ele parece não conseguir importar o Veiculo - mensagem "Veiculo" is not accessed Pylance

Conseguem me auxiliar para encontrar o que está errado?

2 respostas
solução!

Olá, Claudio. Tudo bem?

Analisei o seu código e vou deixar algumas sugestões de correção e melhoria.

  1. Este erro "Carro() takes 1 positional argument but 3 were given" está acontecendo porque você definiu Carro como uma função ao invés de uma classe. Para corrigir isso, você deve definir Carro como uma classe. Veja como deve ficar:

    from veiculo import Veiculo
    
    class Carro(Veiculo):
        def __init__(self, marca, modelo, portas):
            super().__init__(marca, modelo)
            self._portas = portas
    
        def __str__(self):
            return f'{super().__str__()} e tem {self._portas} portas'
    
  2. Essa mensagem "Veiculo" is not accessed Pylance geralmente aparece quando há uma importação que não está sendo utilizada, mas no seu caso, parece que está tudo certo. Verifique se o arquivo veiculo.py está no mesmo diretório que o arquivo onde você está definindo a classe Carro.

  3. Correção no método __str__ da classe Veiculo: Você está usando self._marca e self._modelo, mas eles não foram definidos como atributos. Não deveria ser self.marca e self.modelo? Veja:

    class Veiculo:
        def __init__(self, marca='', modelo=''):
            self.marca = marca
            self.modelo = modelo 
            self._ligado = False
    
        def __str__(self):
            ligado_desligado = 'ligado' if self._ligado else 'desligado'
            return f'O veículo da marca {self.marca}, modelo {self.modelo} está {ligado_desligado}'
    

Após essas correções, tente executar o seu código novamente. Espero ter ajudado e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

Muito obrigado. Olhei várias vezes e não reparei que defini a classe Carro como função.