gpt4 book ai didi

python - 新实例具有旧实例属性值

转载 作者:行者123 更新时间:2023-12-04 18:03:21 27 4
gpt4 key购买 nike

<分区>

我想实例化书籍的多个实例。在我的 __init__() 方法中,我指定了一些默认值。所以我希望每次实例化一本新书时,所有旧值都将被我指定为 __init__() 参数的默认值替换。

相反,我明白了:

class Book(object):
def __init__(self, title=None, book_rows=[]):
self.title = title
self.book_rows = book_rows
def add_line(self, book_row):
assert type(book_row) == BookLine
self.book_rows.append(book_row)

class BookLine(object):
def __init__(self, sent):
self.sent = sent

foo = Book(title='First book')
book_row = BookLine(sent='This is a sentence')
foo.add_line(book_row)

foo.title
# 'First book'
foo.book_rows[0].sent
# 'This is a sentence'

foo = Book(title='Second book. This should be new')
foo.title
# 'Second book. This should be new' <-- OK

foo.book_rows[0].sent
# 'This is a sentence' <-- WRONG!

为什么 foo.book_rows[0].sent 仍然存在?是不是我的 __init__() 方法应该删除所有 book_rows,因为我写道:

__init__(self, title=None, book_rows=[])

?

附言我知道有一个类似的问题,但它是关于类变量的。我认为我这里的变量不是类变量。我错了吗?

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com