
(1)class Structure:
_fields = []
def __init__(self, *args, **kwargs):
if len(args) > len(self._fields):
raise TypeError('Expected {} arguments'.format(len(self._fields)))
for name, value in zip(self._fields, args):
setattr(self, name, value)
for name in self._fields[len(args):]:
setattr(self, name, kwargs.pop(name))
。。。。。。
(2) extra_args = kwargs.keys() - self._fields
for name in extra_args:
setattr(self, name, kwargs.pop(name))
。。。。。。
(3)class Stock(Structure):
_fields = ['name', 'shares', 'prices']
s = Stock('ACER', 50, prices = 99, date = '2012-2-2')
print(s.name, s.shares, s.prices, s.date)
為什么感覺 (1) 里面的 if len(args) > len(self._fields) 是指實際的 key 不能比 field 多,那么不就和(2)里面的代碼矛盾了嗎
(3)里面 _fields = ['name', 'shares', 'prices'],只有3個,但實際s里面還多了一個date的維度,本人不是計算機專業的,完全是剛學,如果問得比較傻還請見諒
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/200355.html
