提问人:Marni Velick 提问时间:6/23/2022 最后编辑:Karl KnechtelMarni Velick 更新时间:6/23/2022 访问量:87
Python 类定义和创建对象 [duplicate] 的问题
Problem with Python class definition and creating an object [duplicate]
问:
我正在为类做一个作业,我必须创建一个“Car”类,然后创建该类的对象并调用方法。
该类将具有 3 个数据属性 - __year_model 和 __make 应该被接受为参数,属性 __speed 设置为 0。
我有这个代码:
class Car:
def __int__(self, year_model, make):
self.__year_model = year_model
self.__make = make
self.__speed = 0
def accelerate(self):
self.__speed += 5
def brake(self):
self.__speed - + 5
def get_speed(self):
return self.__speed
def main():
my_car = Car("2022 Trailblazer", "Chevy")
for i in range(5):
my_car.accelerate()
print(my_car.get_speed())
for i in range(5):
my_car.brake()
print(my_car.get_speed())
我收到一些关于此代码的错误。首先,在制动方法中 - 错误说“语句似乎没有效果”。当我在 main 函数中创建对象时,我收到“2022 Trailblazer”和“Chevy”的错误“unexpected argument”。最后,当我运行代码时,我没有得到任何输出 - 我应该看到速度的打印输出。
如何解决这些问题?
答:
0赞
Chorche Wolloh
6/23/2022
#1
首先,您在 init 方法中有一个错误,因此您的 Class 不接受任何变量。其次,如果你决定将类实例化放在一个方法中,你需要返回变量,并将 main() 函数的结果分配给一个。以下是您的固定代码,似乎按预期运行:
class Car:
# constructor method is inIt not int
def __init__(self, year_model, make):
self.__year_model = year_model
self.__make = make
self.__speed = 0
def accelerate(self):
self.__speed += 5
def brake(self):
self.__speed -= 5
def get_speed(self):
return self.__speed
# you need to return my_car from this function for it to work
def main():
my_car = Car("2022 Trailblazer", "Chevy")
return my_car
# Instantiating your function
my_car = main()
for i in range(5):
my_car.accelerate()
print(my_car.get_speed())
for i in range(5):
my_car.brake()
print(my_car.get_speed())
希望这有帮助!
评论
1赞
Chorche Wolloh
6/23/2022
同样正如人们提到的,要减少变量,您需要使用“-=”而不是“- +”。
0赞
juanpa.arrivillaga
6/23/2022
该方法应该包含所有这些,它只需要按照惯例在守卫中调用main
if __name__ == "__main__": ...
评论
__init__
__int__
self.__speed - + 5
self.__speed - + 5
相当于写作。将创建一个值,但不会修改任何内容。该方法是无用的。Python 的警告告诉你这一点。self.__speed - 5
self.__speed - + 5