在对类中的变量之一进行更改后,我希望类的已实现的方法(to_s
)被调用,并使用上述变量的新值进行调用。我目前使用:
class Car
...
def ask_for_color_change(string)
normalize = string.downcase
if normalize == "yes"
color = gets.chomp
self.set_color(color)
# tried with self.to_s also, doesn't work
puts self
elsif normalize == "no"
puts "happy you like your factory color -> #{@color}"
else
puts "please reply with either yes/no ONLY"
end
end
def to_s
puts "New Car Details"
puts "---------------"
puts "Make: #{@make}"
puts "Model: #{@model}"
puts "Color: #{@color}"
end
end
上述方法中的puts self
输出#<Car:0x00007fabd18ddc98>
。据我所知,这是默认的to_s
实现。因此,换句话说,如何在类本身内调用覆盖的to_s
?
答案 0 :(得分:1)
通过重构如下的`frame=[date,sma]`
concat=pd.concat(frame,axis=0,ignore_index=True)
concat
代码,我现在能够在to_s
方法内成功地隐式调用ask_for_color_change(string)
:
to_s
因此,它与def to_s
"
New Car Details
---------------
Make: #{@make}
Model: #{@model}
Color: #{@color}
"
end
的实现方式有关。对于puts
方法仍然可以看到默认实现的功能的评论将不胜感激。谢谢!
答案 1 :(得分:1)
世界上已经存在太多混乱,无法让某人在调用data.frame
时决定其班级没有返回String。解释器通过调用data.frame
来强制执行此操作,而不是如果您的实现返回非字符串(或受污染的字符串)。
从源头上进行编辑,以提高可读性:
.id