谁能解释通过调用“self.init(”重新初始化对象是否安全,如以下简化示例所示?
我问的原因是我在几本 python 书籍和互联网上都找不到这个方法。有些人建议列出所有属性并将它们一一设置为初始值。基本上我想在完成一些任务后将我的对象设置为初始状态。
class Book(object):
def __init__(self,name,author):
self.name = name
self.author = author
self.copies = 5
def reset(self):
self.__init__(self.name,self.author)
def incrementCopy(self):
self.copies += 1
Kite = Book('kite runner','khaled hosseini')
print 'initial number of copies:', Kite.copies
Kite.incrementCopy()
Kite.incrementCopy()
Kite.incrementCopy()
print '3 copies are added:', Kite.copies
Kite.reset()
print 'number of copies are reinitialized', Kite.copies
initial number of copies: 5
3 copies are added: 8
number of copies are reinitialized 5
最佳答案
__init__
唯一的特别之处在于它会在创建实例时自动调用。除此之外,它是一个普通方法,可以安全地使用它来将您的对象设置回其初始状态。
话虽这么说,仅仅因为它是安全的并不意味着它是个好主意。查看您的代码的其他人可能会对此感到困惑,并且在 reset
方法(__init__
甚至可以调用)中做所有事情并不困难,以更明确关于如何使用该方法。
关于python - 用 self.__init__(...) 重新初始化一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13091221/