#python #list #class-method
Вопрос:
Я пытаюсь распечатать «конкретный» элемент из списка, используя приведенный ниже код. При печати переменной экземпляра класса self.Engine
вывод ['Merlin']
выводится вместе с кавычками и скобками. Как я могу напечатать просто строку, без кавычек и скобок?
Вот код:
class Rockets(object):
Stages = "2 Stage"
def __init__ (self,Rocket_name,Company_Name, CEO, Headquarters, Established):
self.Rocket_name = Rocket_name
self.Company_Name = Company_Name
self.CEO = CEO
self.Headquarters = Headquarters
self.Established = Established
self.Engine=[]
def add_engine(self,Engine_name):
self.Engine.append(Engine_name)
def Rocket_Details(self):
return(print("Rocket:",self.Rocket_name,"nEngine:",self.Engine,"nStages:",self.Stages,"nCompany Name:",self.Company_Name,"nCEO:",self.CEO,"nHeadquarters:",self.Headquarters,"nEstablished:",self.Established))
Falcon9 = Rockets("Flacon9","Space Exploration Technologies Corp.","Elon Musk","Hawthorne, California",2002)
Falcon9.add_engine('Merlin')
Falcon9.Rocket_Details()
Выход:
Rocket: Flacon9
Engine: ['Merlin']
Stages: 2 Stage
Company Name: Space Exploration Technologies Corp.
CEO: Elon Musk
Headquarters: Hawthorne, California
Established: 2002
Ответ №1:
Вы можете использовать str.join
. Например:
class Rockets(object):
Stages = "2 Stage"
def __init__(
self, Rocket_name, Company_Name, CEO, Headquarters, Established
):
self.Rocket_name = Rocket_name
self.Company_Name = Company_Name
self.CEO = CEO
self.Headquarters = Headquarters
self.Established = Established
self.Engine = []
def add_engine(self, Engine_name):
self.Engine.append(Engine_name)
def Rocket_Details(self):
return print(
"Rocket:",
self.Rocket_name,
"nEngine:",
" ".join(self.Engine), # <--- you can use str.join
"nStages:",
self.Stages,
"nCompany Name:",
self.Company_Name,
"nCEO:",
self.CEO,
"nHeadquarters:",
self.Headquarters,
"nEstablished:",
self.Established,
)
Falcon9 = Rockets(
"Flacon9",
"Space Exploration Technologies Corp.",
"Elon Musk",
"Hawthorne, California",
2002,
)
Falcon9.add_engine("Merlin")
Falcon9.Rocket_Details()
С принтами:
Rocket: Flacon9
Engine: Merlin
Stages: 2 Stage
Company Name: Space Exploration Technologies Corp.
CEO: Elon Musk
Headquarters: Hawthorne, California
Established: 2002
Ответ №2:
class Rockets(object):
Stages = "2 Stage"
def __init__ (self,Rocket_name,Company_Name, CEO, Headquarters, Established):
self.Rocket_name = Rocket_name
self.Company_Name = Company_Name
self.CEO = CEO
self.Headquarters = Headquarters
self.Established = Established
self.Engine=['Unknown'] # you can replace this with empty string ['']
def add_engine(self,Engine_name):
self.Engine.append(Engine_name)
def Rocket_Details(self):
return(print("Rocket:",self.Rocket_name,"nEngine:",self.Engine[-1],"nStages:",self.Stages,"nCompany Name:",self.Company_Name,"nCEO:",self.CEO,"nHeadquarters:",self.Headquarters,"nEstablished:",self.Established))
Я предполагаю, что причина, по которой у вас есть движок в виде списка, заключается в том, что вы ожидаете, что движок со временем изменится. Если это логика, то приведенный выше код выведет самое последнее присвоение имени движка. Вы могли бы добавить еще один атрибут, например «я».All_Engines, которые выводили бы все списки двигателей, которые использовались на ракете.