さらなる縮尺を容易にするため、クラスBook
をargs
と 'kwargs'と定義します。'* args'と '* kwargs'を適用してクラスを定義する方法
class Book:
def __init__(self, *args, **kwargs):
if args:
self.name,\
self.author,\
= args
elif kwargs:
self.__dict__.update(kwargs)
これは、位置と、それぞれうまく機能し、引数
In [62]: book1 = Book('Python', 'Guido')
In [63]: book1.author
Out[63]: 'Guido'
In [65]: book2 = Book(name='Python', author='Guido')
In [66]: book2.name
Out[66]: 'Python'
テストの位置とキーワード引数、エラーレポートの混合物とをキーワード。
In [67]: book3 = Book('Python', author='Guido')
ValueError: not enough values to unpack (expected 2, got 1)
バグが*args
や「kwargsから」を取ることなく、複数の条件または標準精細class
で固定することができます。
エレガントな方法で修正するにはどうすればよいですか?
ですが、念のためにあなたは絶対にここに一つの方法ですが、それを必要としますか?あなたがそれらを使用しようとしている方法が意図した/設計された方法と一致しないためです。 – SethMMorton
だから彼らの最初の意図は何ですか?導入された材料はどれですか? –
あなたは解凍しようとしています: 'self.name、self.author =( 'Python'、)'。入力があなたが期待しているものであることを確認してください。 'len(args)'を最初にチェックしてください。 – CristiFati