¿Se están creando objetos a partir de un archivo de texto con tipos de atributos incorrectos?
Tengo un archivo de texto que está formateado (P001, Part001, 10.0, 100 O AP002, AssembledPart2, 130, 1, P002, P004), que se está leyendo línea por línea, y cada línea se está creando como un objeto. Todo parece estar funcionando bien, pero todos los atributos se están estableciendo como str, y necesito que algunos de ellos sean float o int. No puedo entender por qué está sucediendo esto.
def readParts(self, file):
'''Lee el archivo parts.txt y lo ejecuta línea por línea a través de part.__init__ y lo agrega a la lista de partes'''
id = None
name = None
price = 0.0
onhandqty = int
componentID1 = None
componentID2 = None
with open(os.path.join(sys.path[0], "parts.txt"), "r") as file:
for line in file:
row = line.split(",")
if len(row) == 4:
id, name, price, onhandqty = [i.strip() for i in row]
part = Part(id, name, price, onhandqty)
WarehouseManager.parts.append(part)
if len(row) == 6:
id, name, price, onhandqty, componentID1, componentID2 = [i.strip() for i in row]
assembledpart = AssembledPart(id, name, price, onhandqty, componentID1, componentID2)
WarehouseManager.parts.append(assembledpart)
Para referencia, la clase “init”
class Part():
id = None
name = None
price = 0.0
onhandqty = int
def __init__(self, id, name, price, onhandqty):
self.id = id
self.name = name
self.price = price
self.onhandqty = onhandqty
class AssembledPart(Part):
componentID1 = None
componentID2 = None
def __init__(self, id, name, price, onhandqty, componentID1, componentID2):
super().__init__(id, name, price, onhandqty)
self.componentID1 = componentID1
self.componentID2 = componentID2
¿Alguien puede señalar dónde me estoy equivocando?
davy.ai
El problema probablemente está en esta línea:
Esto asigna todos los valores a variables de tipo cadena. Para asignar correctamente los valores como números decimales o enteros, debes convertirlos explícitamente:
Necesitarás hacer la misma conversión para AssembledPart también.
Esto debería resolver tu problema con los atributos que se establecen como cadenas.