python类实例覆盖_避免类实例覆盖默认值
我正在處理初始化類的問題。下面是一個復制的例子,突出了潛在的問題(我沒有設法使它小得多):
課程
我們有兩個類A,B。等級制度A:第一類實例有兩個屬性link;name
^{cd2>的一個屬性是這個類的。在
為了更快地聲明B的實例,我考慮了以下幾點:B(name=name)簾幕后面的B(a=A(name=name))。在
這是密碼class A(object):
def __init__(self, link='', name=''):
self.name = name
self.link = link
class B(object):
def __init__(self, a=A(), value=0, link='', name=''):
# Two ways to initialize "self.a":
# 1. If "name" or "link" provided
# 2. With "a" provided
if {name, link}.difference({''}):
self.a = A(name=name, link=link)
else:
self.a = a
# Rest
self.value = value
def __str__(self):
return 'Instance:\nname:\t{}\nlink:\t{}\nvalue:\t{}'.format(self.a.name, self.a.link, self.value)
測試
這里有兩個小測試:{{10>使用第一個實例來定義第二個方法將實例定義為空(B()),然后繼續填充/覆蓋字段。在
正如下面可以看到的,第二個選項是有問題的,因為它覆蓋了類的默認值。在
^{pr2}$
我怎么能保證這個問題不會發生?我應該重寫__new__方法,添加getters/setter,使用副本(copy.deepcopy)等嗎?在
總結
以上是生活随笔為你收集整理的python类实例覆盖_避免类实例覆盖默认值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 链表之单循环链表
- 下一篇: centos安装 mysql_Linux