gpt4 book ai didi

python - 如何在 python 函数中将对象的实例作为参数传递?

转载 作者:太空狗 更新时间:2023-10-30 01:22:36 25 4
gpt4 key购买 nike

我刚开始学习 python,我对如何将对象的实例作为函数的参数传递感到困惑,下面是我为练习而编写的一些代码,基本思想是有一个车库,该车库内没有汽车,您可以添加汽车到车库并查看其详细信息。

class Garage:
cars = []

def add_car(self, car):
cars.append(car)

class Car:
car_name, car_price, car_colour, car_miles, car_owners = "", "", "", "", ""

def add_new_car(self, garage, name, price, colour, miles, owners):
car_name = name
car_price = price
car_colour = colour
car_miles = miles
car_owners = owners

garage.add_car(self)

def main(argv=None):
your_garage = Garage()

while True:
print "Your garage contains %d cars!" % len(your_garage.cars)
print "1) Add a new car\n2) View your car's\n0) Leave the garage"
user_input = raw_input("Please pick an option: ")

if user_input == "1":
add_car(your_garage)
elif user_input == "2":
view_cars(your_garage)
elif user_input == "0":
quit()

def add_car(garage):
name = raw_input("Name: ")
price = raw_input("Price: ")
colour = raw_input("Colour: ")
miles = raw_input("Miles: ")
owners = raw_input("Owners: ")

car = Car()
car.add_new_car(garage, name, price, colour, miles, owners)

def view_cars(garage):
for x in xrange(len(garage.cars)):
print garage.cars[x].car_name
print garage.cars[x].car_price
print garage.cars[x].car_colour
print garage.cars[x].car_miles
print garage.cars[x].car_owners

if __name__ == "__main__":
main()

我的代码可能非常错误,或者可能有一种简单的方法可以做到这一点,我想象的方式是我创建的新汽车实例将被传递到 Garage 中的 add_car() 函数中,所以它可以添加到汽车列表中。我该怎么做?

最佳答案

也许这个简化的示例会为您指明正确的方向。当前代码中的主要问题之一是您应该在 __init__ 方法(或其他方法)中设置实例级属性(例如,汽车的颜色或车库的汽车库存)在实例上操作),而不是在类级别。

class Garage:
def __init__(self):
self.cars = [] # Initialize instance attribute here.

def add_car(self, car):
self.cars.append(car)

class Car:
def __init__(self, color):
self.color = color # Ditto.

def __repr__(self):
return "Car(color={})".format(self.color)

def main():
g = Garage()
for c in 'red green blue'.split():
c = Car(c)
g.add_car(c) # Pass the car to the garage's add_car method.
print g.cars # [Car(color=red), Car(color=green), Car(color=blue)]

if __name__ == "__main__":
main()

关于python - 如何在 python 函数中将对象的实例作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20725699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com