我必须创建一个这种类型的颜色
class Color:
def __init__(self, r, g, b):
self.r = r
self.g = g
self.b = b
我必须创建这些方法:
-createatuple()返回对象颜色的元组(r,g,b)
-mixture(f)返回颜色的新实例,其值是当前实例与颜色f的混合
我试过这个
>>>class Color:
def __init__(self, r, g, b):
self.r = r
self.g = g
self.b = b
def createatuple(self):
return (self.r, self.g, self.b)
def mixture(self, f):
self.r = int((self.r+f.r)/2)
self.g = int((self.g+f.g)/2)
self.b = int((self.b+f.b)/2)
return self.r
return self.g
return self.b
>>>color1 = Color(10,15,10)
>>>color1.createatuple()
(10,15,10)
>>>color2 = Color(20,5,200)
>>>color2.createatuple()
(20,5,200)
如果我想这样做:
>>>color1.mixture(color2).createatuple()
(15,10,105)
但我收到" ' STR'对象没有属性' createatuple()' "
出了什么问题?
答案 0 :(得分:1)
您的mixture
方法没有制作新实例。它只返回self.r
值(return
的多次使用不做任何事情;第一个结束方法)。我发现你没办法制作str
;您的示例代码中没有str
个。据推测,你想要mixture
:
def mixture(self, f):
# For subclassing friendliness, you might construct via:
# type(self)(...) instead of Color(...)
return Color((self.r + f.r) // 2, (self.g + f.g) // 2, (self.b + f.b) // 2)
答案 1 :(得分:0)
我不确切地知道mixture
应该做什么,但无论如何,你里面有3个return
语句。请注意,以return
开头的行结束整个方法,返回值。
因此,在您的情况下,您总是返回self.r
,这意味着,在实践中,您正在执行self.r.createtuple()
。但是,self.r
显然没有此方法,因为它不是Color
。