Ruby, код:Как лучше реализовать этот Ruby-код в Python
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, но код Ruby ужасен. 'to_f' должен возвращать' Float', а не 'File', и он * обязательно * не должен иметь никаких побочных эффектов! Кроме того, «я» является излишним. –
Я получил код ruby из книги lol, его примерный код, показывающий миксины, хотя и не должен быть чем-то значимым, я думаю. – Riina