2
我正在使用令人驚歎的attrs
庫以非常優雅的方式定義大量對象屬性,並且它迄今一直像魅力一樣工作。Python attrs庫:使用其他屬性定義attr.ib(默認=)
我目前遇到的唯一問題是我有時想通過引用其他attr.ib()
屬性來定義默認值。下面是一些代碼如果name
默認的是一個靜態的字符串,可以運行:
import attr
from attr.validators import instance_of
import datetime
@attr.s
class Something:
some_date = attr.ib(validator=instance_of(datetime.date))
some_number = attr.ib(convert=float)
name = attr.ib(validator=instance_of(str),
default="Generic Name {0} - {1}%".format(
some_date.strftime("%d-%b-%Y"),
some_number * 100)
)
something_instance = Something(some_date=datetime.date.today(), some_number=0.375)
的問題是,name
沒有看到一個float
和date
,但_CountingAttr
對象,所以我得到一個AttributeError
(和some_number * 100
的TypeError
)。既然我不能參考self
,我該怎麼做?