Yorumlayıcıda aşağıdaki oturum bir p gösterir
Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import collections
>>> class Person(collections.namedtuple('base', 'name')):
__slots__ =()
def __new__(cls, *args, **kwargs):
for key in tuple(kwargs):
if key not in cls._fields:
del kwargs[key]
return super().__new__(cls, *args, **kwargs)
>>> p = Person(name='joe', age=25)
>>> p
Person(name='joe')
>>>
Alternatif:: Bunun yerine daha basit bir çözüm olduğundan
, istediğiniz şekilde daha sonraki programı bulabilirsiniz:
#! /usr/bin/env python3
import collections
def main():
Person = namedtuple('Person', 'name')
p = Person(name='joe', age=25)
print(p)
def namedtuple(typename, field_names, verbose=False, rename=False):
base = collections.namedtuple('Base', field_names, verbose, rename)
return type(typename, (base,), {
'__slots__':(),
'__new__': lambda cls, *args, **kwargs: base.__new__(cls, *args, **{
key: value for key, value in kwargs.items()
if key in base._fields})})
if __name__ == '__main__':
main()
Sorununuzu düzeltme için ossible çözüm Bunu yapamazsın. –
İsimdeki ipuçları. –
@Alex, benim sorum ile ne ilgisi var? – norbertpy