【发布时间】:2015-09-06 06:35:27
【问题描述】:
Ruby 代码:
module ToFile
def filename
"object_#{self.object_id}.txt"
end
def to_f
File.open(filename, 'w') { |f| f.write(to_s) }
end
end
class Person
include ToFile
attr_accessor :name
def initialize(name)
@name = name
end
def to_s
name
end
end
我的 Python 代码
class ToFile:
def __init__(self):
self.filename = "object_#{0}.txt".format(id(self))
def to_f(self):
with open(self.filename, 'w') as f:
f.write(self.to_s())
class Person(ToFile):
def __init__(self, name):
super().__init__()
self.name = name
def to_s(self):
return self.name
我以前从未在 python 中使用过 mixins 或多重继承,所以这只是我放在一起的,所以我只想知道这是 Pythonic 的方式来做我想做的事情,还是有更简洁的方式来写这个.
【问题讨论】:
-
我无法评论 Python 代码,但是 Ruby 代码很糟糕。
to_f应该返回Float,而不是File,而且它当然不应该有任何副作用!另外,self是多余的。 -
我从一本书中得到了 ruby 代码,哈哈,它只是显示 mixins 的示例代码,我认为没有任何意义。
标签: python ruby multiple-inheritance mixins