如何使用if语句添加对象?

2024-06-02 12:43:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建这两种方法,在第一种方法中,我从车辆名称验证车辆的存在。在第二种情况下,打算添加一辆新车,首先验证是否有具有特定名称的车辆,以避免结果重复。然而,我总是得到描述的错误

我能做些什么来防止这种情况发生?只有preco_base属性是可变的

def exists_viatura(self, nome):
    for v in self.gestor:
        if v.nome == nome:
            return True
        else:
            print("Não existe nenhuma viatura")

def add_viatura(self, new_v):
    for v in self.gestor:
        new_v = Viatura(new_v.nome, new_v.modelo, new_v.tipo_electrica, new_v.preco_base)
        if g.exists_viatura(new_v.nome):
            print("Já existe uma viatura com esse nome")
    self.gestor.append(new_v)

我发现以下错误:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:/Users/sandr/PycharmProjects/projecto/Classes_Projecto.py", line 189, in add_viatura
    new_v = Viatura(new_v.nome, new_v.modelo, new_v.tipo_electrica, new_v.preco_base)
AttributeError: 'str' object has no attribute 'nome'

课程包括:

class Viatura:

    def __init__(self, nome, modelo, tipo_electrica, preco_base):
        self.__nome = nome
        self.__modelo = modelo
        self.__tipo_electrica = tipo_electrica #Como saber se uma bicicleta é eléctrica ou não?
        self.preco_base = preco_base

    @property
    def nome(self):
        return self.__nome

    @property
    def modelo(self):
        return self.__modelo

    @property
    def tipo_electrica(self):
        return self.__tipo_electrica

class Gestor:

    def __init__(self):
        self.gestor = []

Tags: inselfnewbasereturndef车辆nome
2条回答

如果new_v实际上不是Viatura对象(因为您正在尝试使用字符串添加它),那么应该将其余属性传递给add_Viatura

def exists_viatura(self, nome):
    for v in self.gestor:
        if v.nome == nome:
            return True
    print("Não existe nenhuma viatura")
    return False

def add_viatura(self, nome, modelo, tipo_electrica, preco_base):
        if g.exists_viatura(nome):
            print("Já existe uma viatura com esse nome")
        else:
            new_v = Viatura(nome, modelo, tipo_electrica, preco_base)
            self.gestor.append(new_v)

猜猜看,不知道这是什么类g?你叫它g.exists_viatura()

def exists_viatura( self, nome ):
    for v in self .gestor:
        if v .nome == nome:
            return True
    print("Não existe nenhuma viatura")
    return False


def add_viatura( self, new_v ):
        if g.exists_viatura( new_v.nome ):
            print("Já existe uma viatura com esse nome")
        else:
            car = Viatura( new_v.nome, new_v.modelo, new_v.tipo_electrica, new_v.preco_base )
            self .gestor .append( car )

相关问题 更多 >