我用ruby编写了以下代码:
class Package
def initialize(name)
@name = name
@elements = []
end
[:type, :block].each do |bindtype|
define_method "get_#{bindtype}_by_name" do |name|
get_by_name(name, bindtype)
end
end
def get_by_name(name, bindtype=nil)
@elements.each do |element|
return if element.name == name
end
return nil
end
我读过这个问题about define_method in python,我想用我的Ruby代码在Python中实现同样的事情:
^{pr2}$我把这个函数叫做:
^{3}$但显然这行不通,因为我无法恢复正在搜索的元素的名称。有人能帮助我更好地理解这个python define_方法是如何与我的代码一起工作的吗?在
您就快到了;将
bindtype
值绑定为函数参数的默认值,然后您想在self
上调用get_by_name()
:我冒昧地使用
str.format()
来格式化方法名,而不是使用+
串联,我发现它更具可读性。在或者,在python3中,您可以只创建^{} objects :
^{pr2}$相关问题 更多 >
编程相关推荐