假设我们有一个简单的python模型类。
class Library:
def __init__():
self.library_name = None
self.books = []
我们将通过以下方式使用它:
new_library = Library()
new_library.library_name = "Delhi International Library"
这将是一个没有书的空图书馆。这样安全吗?我知道您不应该在方法签名中使用可变类型,因为它是在评估时。
答案 0 :(得分:4)
使用可变类型作为默认值的惯用方式是使用None
默认值:
class Library:
def __init__(self, name, books=None):
self.library_name = name
self.books = [] if books is None else books
new_library = Library("Delhi International Library")
这里name
是必需的参数,因为恕我直言,一个库应该有一个名称,但是如果以后您将不得不创建一个没有参数的库,那么您也可以使用默认值。
books
是可选的。如果未提供,则将获得一个空库,并且如果您第一次使用它,它将不会成为默认库,因为None
不可更改...
答案 1 :(得分:1)
您可以使用:
class Library:
def __init__(self, library_name, books=None):
self.library_name = library_name
self.books = books or []
然后实例化为:
new_library = Library("Delhi International Library")