有人可以帮助我/告诉我如何修复此代码吗? 我收到了一个错误:
TypeError:get_color()缺少2个必需的位置参数:'self'和'color'
class Automobile:
def __init__(self, color):
self.color = color
def get_color(self, color):
input("Enter number")
if self.color == 1:
print("white")
def main():
Automobile.get_color()
main()
答案 0 :(得分:1)
首先需要实例化类的对象。使用此功能,您可以拨打get_color()
。
auto = Automobile(1)
auto.get_color()
另请考虑将get_color
重写为:
def get_color(self):
if self.color == 1:
return "white"
else:
return "none"
由于您当前的实施并没有真正完成您期望名为get_color
的功能所做的事情。
答案 1 :(得分:1)
从我阅读代码的方式来看,您似乎正在尝试使get_x方法执行set_x方法通常所做的事情。另外,根据您的代码
if self.color == 1:
print(white)
我认为你想要将1映射为白色,然后将2映射为黑色,将3映射为蓝色,依此类推?
我先处理最后一部分。通常情况下,如果您想将某些内容映射到其他内容(在这种情况下,数字为颜色),最好使用字典:
color_dict = {1: 'white',
2: 'black',
3: 'etc.',}
然后,您可以通过编写
来调用(例如)白色>>>print(color_dict[1])
'white'
现在,在课堂上,我将向您展示两种不同的方法来做我想做的事情。
选项A:Old-School getter / setters:
class Automobile:
def __init__(self, color):
self.color_dict = {1: 'white',
2: 'black',
3: 'etc.',}
self.color = self.color_dict[key]
def get_color(self):
return self.color
def set_color(self, key):
self.color = self.color_dict[color]
从此处开始,您可以致电:
>>>auto = Automobile(1)
>>>print(auto.get_color())
'white'
>>>auto.set_color(2)
>>>auto.print(auto.get_color())
'black'
这将很有效,我认为它可以做你想要的。
在python 3中有一个更新的方法,但是它使用装饰器(你会在一秒钟内看到它们以'@'开头,它们有点难以理解)
选项B:基于属性的新方法
class Automobile:
def __init__(self, color):
self.color_dict = {1: 'white',
2: 'black',
3: 'etc.',}
self.color = color
@property
def color(self):
return self._color
@color.setter
def color(self, key):
self._color = self.color_dict[key]
这里的用法略有不同。它开始是一样的:
>>>auto = Automobile(1)
>>>print(auto.color)
'white'
但是,要更改颜色,而不是使用函数,可以使用=
修改属性>>>auto.color = 2
>>>print(auto.color)
'black'
希望有所帮助!
答案 2 :(得分:0)
通过输入Automobile.get_color()
,你告诉班级本身汽车告诉你它的颜色。
但是,Automobile
作为一个班级没有颜色!
类是要扩展的类的实例的蓝图或值和函数计划。例如,您需要说:
NissanLeaf = Automobile(2)
为了说你有一只Black Nissan Leaf。
然后,你可以NissanLeaf.get_color()
去发现汽车确实是黑色的。
实例,换句话说,是使用类作为蓝图构建的实际创建。为了查看对象的属性,它需要是一个实际的创建,而不仅仅是它的想法。
您可以通过在类名后面添加括号,然后在括号中填入您在类的__init__
函数中设置的任何参数来创建对象的实例。
例如:
class Human:
def __init__(self, age, height):
self.age = age
self.height = height
是蓝图和
John = Human(27, 71)
是Human类的实例,我们可以从中
print John.age
>>> 27
检索数据。
希望有所帮助!!!