从3.0开始,只支持创建一个参数关键字:
class S3Obj:
def __init__(self, bucket, key, *, storage_class='Standard'):
self.bucket = bucket
self.key = key
self.storage_class = storage_class
Run Code Online (Sandbox Code Playgroud)
如何使用数据类获得这种签名?像这样的东西,但最好没有SyntaxError:
@dataclass
class S3Obj:
bucket: str
key: str
*
storage_class: str = 'Standard'
Run Code Online (Sandbox Code Playgroud)
理想情况下是声明性的,但是使用__post_init__钩子和/或替换类装饰器也很好 - 只要代码是可重用的.
编辑:可能是这样的语法,使用省略号文字
@mydataclass
class S3Obj:
bucket: str
key: str
...
storage_class: str = 'Standard'
Run Code Online (Sandbox Code Playgroud)