рдПрдХ рд╕реНрд╡рд╕реНрде рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╕реНрдкрд░реНрд╢

рдирд╛рдо рджрд┐рдпрд╛ рдЯрдкрд▓
рдпрд╣ рд▓реЗрдЦ рдкрд╛рдпрдерди рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЖрд╡рд┐рд╖реНрдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ: рдирд╛рдорд┐рдд рд╣рдо рдЗрд╕рдХреА рд╕реБрдЦрдж рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреНрдЮрд╛рдд рд╕реЗ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рддрдХред рд╡рд┐рд╖рдп рдореЗрдВ рд╡рд┐рд╕рд░реНрдЬрди рдХрд╛ рд╕реНрддрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдмрдврд╝реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдкрд╛рдПрдЧрд╛ред рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!


рдкрд░рд┐рдЪрдп


рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХрдИ рдЧреБрдгреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд╛рд▓рддреВ рдЬрд╛рдирд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА: рдкреНрд░рдХрд╛рд░, рдЙрдкрдирд╛рдо рдФрд░ рдЙрдореНрд░ред


рдЕрдХреНрд╕рд░ рдЗрд╕ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЯреНрдпреВрдкрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


("pigeon", "", 3) ("fox", "", 7) ("parrot", "", 1) 

рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд╛рдорд┐рдд рдЯрдкрд▓ - рд╕рдВрдЧреНрд░рд╣.рдирд╛рдорддрд╛рд▓ рдЙрдкрдпреБрдХреНрдд рд╣реИ:


 from collections import namedtuple Pet = namedtuple("Pet", "type name age") frank = Pet(type="pigeon", name="", age=3) >>> frank.age 3 

рд╣рд░ рдХреЛрдИ рдпрд╣ рдЬрд╛рдирддрд╛ рд╣реИ are рдФрд░ рдпрд╣рд╛рдБ рдХреБрдЫ рдХрдо рдЬреНрдЮрд╛рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:


рддреНрд╡рд░рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдлрд╝реАрд▓реНрдб


рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЧреБрдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛? рдлреНрд░реИрдВрдХ рдЙрдореНрд░ рдмрдврд╝рдиреЗ рд╣реИ, рдФрд░ рдореЛрдЯрд░рд╕рд╛рдЗрдХрд┐рд▓ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИред рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ _replace() рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо _replace() рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдЖрдП:


 >>> frank._replace(age=4) Pet(type='pigeon', name='', age=4) 

рдФрд░ рдЕрдЧрд░ рдЖрдк рдкреВрд░реА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - _asdict() :


 >>> frank._asdict() OrderedDict([('type', 'pigeon'), ('name', ''), ('age', 3)]) 

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╢реАрд░реНрд╖рдХ рдкрд░рд┐рд╡рд░реНрддрди


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк CSV рд╕реЗ рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдЯреВрдкреНрд▓реЗ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВред рдлрд╝реАрд▓реНрдб рдирд╛рдо CSV рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╣реЗрдбрд░ рд╕реЗ рд▓рд┐рдП рдЧрдП рдереЗред рд▓реЗрдХрд┐рди рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:


 # headers = ("name", "age", "with") >>> Pet = namedtuple("Pet", headers) ValueError: Type names and field names cannot be a keyword: 'with' # headers = ("name", "age", "name") >>> Pet = namedtuple("Pet", headers) ValueError: Encountered duplicate field name: 'name' 

рд╕рдорд╛рдзрд╛рди рдХрд╛ rename=True рддрд░реНрдХ:


 # headers = ("name", "age", "with", "color", "name", "food") Pet = namedtuple("Pet", headers, rename=True) >>> Pet._fields ('name', 'age', '_2', 'color', '_4', 'food') 

"рдЕрд╕рдлрд▓" рдирд╛рдореЛрдВ рдХреЛ рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди


рдпрджрд┐ рдЯреБрдкрд▓ рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝реАрд▓реНрдбреНрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрднреА рднреА рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛:


 Pet = namedtuple("Pet", "type name alt_name") >>> Pet("pigeon", "") TypeError: __new__() missing 1 required positional argument: 'alt_name' >>> Pet("pigeon", "", None) Pet(type='pigeon', name='', alt_name=None) 

рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ defaults рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:


 Pet = namedtuple("Pet", "type name alt_name", defaults=("",)) >>> Pet("pigeon", "") Pet(type='pigeon', name='', alt_name='') 

defaults рдкреВрдВрдЫ рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЕрдЬрдЧрд░ 3.7+ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 Pet = namedtuple("Pet", "type name alt_name") default_pet = Pet(None, None, "") >>> default_pet._replace(type="pigeon", name="") Pet(type='pigeon', name='', alt_name='') >>> default_pet._replace(type="fox", name="") Pet(type='fox', name='', alt_name='') 

рд▓реЗрдХрд┐рди defaults рд╕рд╛рде, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдмрд╣реБрдд рдЕрдЪреНрдЫреЗред


рдЕрд╕рд╛рдзрд╛рд░рдг рд╣рд▓реНрдХрд╛рдкрди


рдирд╛рдорд┐рдд рдЯрдкрд▓ рдХреЗ рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣рд▓реНрдХрд╛рдкрди рд╣реИред рдПрдХ рд▓рд╛рдЦ рдХрдмреВрддрд░реЛрдВ рдХреА рдПрдХ рд╕реЗрдирд╛ рдХреЛ рдХреЗрд╡рд▓ 10 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд▓рдЧреЗрдВрдЧреЗ:


 from collections import namedtuple import objsize # 3rd party Pet = namedtuple("Pet", "type name age") frank = Pet(type="pigeon", name="", age=None) pigeons = [frank._replace(age=idx) for idx in range(100000)] >>> round(objsize.get_deep_size(pigeons)/(1024**2), 2) 10.3 

рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдкреЗрдЯ рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╕рдорд╛рди рд╕реВрдЪреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 19 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрдЧреАред


рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдЬрдЧрд░ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╕реНрддреБрдПрдВ рднрд╛рд░реА __dict__ рдбреИрдВрдбрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдирд╛рдо рдФрд░ рдореВрд▓реНрдп рд╣реЛрддреЗ рд╣реИрдВ:


 class PetObj: def __init__(self, type, name, age): self.type = type self.name = name self.age = age frank_obj = PetObj(type="pigeon", name="", age=3) >>> frank_obj.__dict__ {'type': 'pigeon', 'name': '', 'age': 3} 

рдирд╛рдорд╛рдВрдХрд┐рдд рд╡рд╕реНрддреБрдПрдВ рдЗрд╕ рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рд░рд╣рд┐рдд рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрдо рд╕реНрдореГрддрд┐ рд▓реЗрддреА рд╣реИрдВ:


 frank = Pet(type="pigeon", name="", age=3) >>> frank.__dict__ AttributeError: 'Pet' object has no attribute '__dict__' >>> objsize.get_deep_size(frank_obj) 335 >>> objsize.get_deep_size(frank) 239 

рд▓реЗрдХрд┐рди рдирд╛рдорд┐рдд рдЯрдкрд▓ рдХреЛ __dict__ рдХреИрд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ __dict__ ? уГД рдкрд░ рдкрдврд╝реЗрдВ


рд╕рдореГрджреНрдз рдЖрдВрддрд░рд┐рдХ рджреБрдирд┐рдпрд╛


рдпрджрд┐ рдЖрдк рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЕрдЬрдЧрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдЬрд╛рдирддреЗ рд╣реИрдВ: рдПрдХ рд╣рд▓реНрдХреА рд╡рд╕реНрддреБ __slots__ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ:


 class PetSlots: __slots__ = ("type", "name", "age") def __init__(self, type, name, age): self.type = type self.name = name self.age = age frank_slots = PetSlots(type="pigeon", name="", age=3) 

"рд╕реНрд▓реЙрдЯ" рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдЫреЛрдЯреА рдореЗрдореЛрд░реА рд▓реЗрддреЗ рд╣реИрдВред "рд╕реНрд▓реЙрдЯреНрд╕ рдкрд░ рдлреНрд░реИрдВрдХ" "рдореЛрдЯрд░рд╕рд╛рдЗрдХрд┐рд▓ рдкрд░ рдлреНрд░реИрдВрдХ" рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд▓реНрдХрд╛ рд╣реИ, рджреЗрдЦреЗрдВ:


 >>> objsize.get_deep_size(frank) 239 >>> objsize.get_deep_size(frank_slots) 231 

рдпрджрд┐ рдЖрдк рдпрд╣ рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдирд╛рдордкрдЯреНрдЯ рднреА рд╕реНрд▓реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдЪреНрдЪрд╛рдИ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рдирд╣реАрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреНрдпреВрдкрд▓ рдХрдХреНрд╖рд╛рдПрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ:


 Pet = namedtuple("Pet", "type name age") 

рдирд╛рдорд╛рдВрдХрд┐рдд рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд▓реЗ рдЬрд╛рджреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рд╡рд░реНрдЧ рдХреА рддрд░рд╣ рдХреБрдЫ рдмрдирд╛рддрд╛ рд╣реИ (рдмрд╣реБрдд рд╕рд░рд▓реАрдХреГрдд):


 class Pet(tuple): __slots__ = () type = property(operator.itemgetter(0)) name = property(operator.itemgetter(1)) age = property(operator.itemgetter(2)) def __new__(cls, type, name, age): return tuple.__new__(cls, (type, name, age)) 

рдЕрд░реНрдерд╛рддреН, рд╣рдорд╛рд░рд╛ рдкрд╛рд▓рддреВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг tuple , рдЬрд┐рд╕рдореЗрдВ рддреАрди рд╕рдВрдкрддреНрддрд┐ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд╛рдЦреВрдиреЛрдВ рдХреЗ рд╕рд╛рде рдкрд┐рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


  • type рдЯрдкрд▓ рдХреЗ рдЕрд╢рдХреНрдд рддрддреНрд╡ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
  • name - рдЯрдкрд▓ рдХрд╛ рдкрд╣рд▓рд╛ рддрддреНрд╡
  • age - рдЯрдкрд▓ рдХрд╛ рджреВрд╕рд░рд╛ рддрддреНрд╡

рдФрд░ __slots__ рдХреЗрд╡рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рд▓реНрдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдирддреАрдЬрддрди, рдкреЗрдЯ рдереЛрдбрд╝реА рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 >>> frank.index("") 1 >>> type, _, _ = frank >>> type 'pigeon' 

рдЪрд╛рд▓рд╛рдХреА рд╕реЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛, рд╣реБрд╣?


рдбреЗрдЯрд╛ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рд╣реАрди рдирд╣реАрдВ


рдЪреВрдВрдХрд┐ рд╣рдо рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдЬрдЧрд░ 3.7 рдореЗрдВ, рдПрдХ uber-рдЬрдирд░реЗрдЯрд░ рдХреЛрдб рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ - dataclassesред


рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХ рдбреЗрдЯрд╛ рдХреНрд▓рд╛рд╕ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:


 from dataclasses import dataclass @dataclass class PetData: type: str name: str age: int 

рдЪрдорддреНрдХрд╛рд░ рддреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ! рд▓реЗрдХрд┐рди рдПрдХ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рд╣реИ - рдпрд╣ рд╡рд╕рд╛ рд╣реИ:


 frank_data = PetData(type="pigeon", name="", age=3) >>> objsize.get_deep_size(frank_data) 335 >>> objsize.get_deep_size(frank) 239 

рдбреЗрдЯрд╛ рд╡рд░реНрдЧ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрдЬрдЧрд░ рд╡рд░реНрдЧ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рд╡рд╕реНрддреБрдПрдВ __dict__ рдХреЗ рднрд╛рд░ рдХреЗ рдиреАрдЪреЗ рд╕рдорд╛рдкреНрдд рд╣реЛ __dict__ ред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЖрдзрд╛рд░ рд╕реЗ рд▓рд╛рдЗрдиреЗрдВ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛ рдХреНрд▓рд╛рд╕ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИрдВред


рд▓реЗрдХрд┐рди рд░реБрдХрд┐рдП, рдЖрдк рдЯреВрдкреНрд▓реЗ рдХреА рддрд░рд╣ рдбреЗрдЯрд╛ рдХреНрд▓рд╛рд╕ рдХреЛ рдлреНрд░реАрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рддрдм рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛?


 @dataclass(frozen=True) class PetFrozen: type: str name: str age: int frank_frozen = PetFrozen(type="pigeon", name="", age=3) >>> objsize.get_deep_size(frank_frozen) 335 

рдЕрдлрд╕реЛрд╕ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрдореЗ рд╣реБрдП, рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рдЬрдирджрд╛рд░ рд╡рд╕реНрддреБ рдмрдиреА рд░рд╣реАред рдЗрд╕рд▓рд┐рдП рдЕрдЧрд░ рдЖрдкрдХреЛ рд╣рд▓реНрдХреА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЬрд┐рд╕реЗ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЯреНрдпреВрдкрд▓реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) - рдирд╛рдореНрдЯреВрдкрд▓ рдЕрднреА рднреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред


тМШ тМШ тМШ


рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╛рдорд┐рдд рдЯрдкрд▓ рдкрд╕рдВрдж рд╣реИ:


  • рдИрдорд╛рдирджрд╛рд░ рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп,
  • рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛
  • рдирд╛рдорд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд╣реБрдВрдЪ
  • рд╣рд▓реНрдХреЗ рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпред

рдФрд░ рдЙрд╕реА рд╕рдордп рдпрд╣ рдХреЛрдб рдХреА 150 рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реБрдЦ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП уГД


рдпрджрд┐ рдЖрдк рдорд╛рдирдХ рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ @ohmypy рдЪреИрдирд▓ рдХреЛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░реЗрдВ

Source: https://habr.com/ru/post/hi438162/


All Articles