私は驚くべきライブラリを使用して非常にエレガントな方法で多くのオブジェクト属性を定義しています。Python attrs library:他の属性を使用して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
がAttributeError
(それゆえ私が得る、float
とdate
が、_CountingAttr
オブジェクトを見ていないということですsome_number * 100
についてはTypeError
)。私はself
のどちらも参照できないので、どうすればいいですか?