pythonã¯åãã³ããç¡è¦ããã®ã§ãããªããããªããã§ããã© ã©ããã¦ããªã¼ãã¼ãã¼ããããªãèªåã§åãå¤å®ãã ã¦ãããUnionåãããã£ã¦ãã¨ã¯ãã¨ãã¨ãããããã®ã£ã¦ãã¨ã㪠class Point: def __init__(self, x: Union[Tuple[float, float], float] = 0.0, y: float=0.0) -> None: if isinstance(x, tuple): self.x = x[0] self.y = x[1] else: self.x = x self.y = y mypyã¯éã£ã åãã $ python3 -i shape.py >>> Point() Point(0.0, 0.0) >>> Point(1.0,2.0) Point(1.0, 2.0) >>> Point((2.0,4.0)) Point(2.
ãã¤ãã®ãã¤ã§ãã対å¿ãã¦ããªãå¤ãjson.dumps()ã«ä¸ããã¨TypeErrorãçºçãããã¤ã§ãã TypeError ä¾ãã°ããããdataclassãå®ç¾©ãã¦ã from dataclasses import dataclass, asdict @dataclass class Point: x: int y: int json.dumpsããã¨TypeError import json p = Point(x=1, y=2) # TypeError: Object of type Point is not JSON serializable print(json.dumps(p)) default ãã¤ãã©ããã«defaultãæ¸¡ãã¦ãããå¿ è¦ãããã¾ããã¡ãã£ã¨ããã©ãããã§ãããis_dataclassã¨ãã颿°ã§èª¿ã¹ãããã®ã§ã©ãã«ããªãã¾ãã import json
jsonã®encodeã¨ã©ã¼ã«ã¤ãã¦ã¯æã«æ¸ãããã®è¾ºãè¦ã¦ãããã¨ãã¦ã pythonã§jsonåºåããéã§å¯¾å¿ãã¦ããªãå(e.g. datetime)ã®å¤ã夿ããªããåºåããã - Qiita ä»åã®ä¸»é¡ã¯ãjson.dumpsã«æ¸¡ãdefaultã®é¢æ°ã¨ãã¦functools.singledispatchãæç¨ããã¨ãã話ã 使ããã singledispatchãå©ç¨ããã¢ã¸ã¥ã¼ã«ãå®ç¾© ä¾ãã°ä»¥ä¸ã®ãããªextjsonã¢ã¸ã¥ã¼ã«ãå®ç¾©ãã¦ãããã extjson.py import json from functools import ( singledispatch, partial, ) @singledispatch def encode(o): raise TypeError("Object of type '%s' is not JSON serializable"
仿¥ã¯ Single-dispatch generic functions (PEP-443)ãGeneric functionã¯æ±ç¨é¢æ°ã¨è¨³ããããã¨ãå¤ãããè¨èªã«ãã£ã¦å¾®å¦ã«éã使ããæ¹ããã¦ãããPythonã§ã¯ã弿°ã®åã«ãã£ã¦åä½ãç°ãªãè¤æ°ã®é¢æ°ã«åãååãã¤ãããã¨ããæå³åãã§ä½¿ããã¦ããããã ã ã¨æ¸ãã¦ããã£ã±ãããããªãã®ã§ãä¾ç¤ºã弿°ã®åã«ãã£ã¦åºåãç°ãªã颿°ãèãããGeneric functionsã使ããªãã¨ãããªæãã def print_func(arg): arg_type = type(arg) if arg_type is int: print("found integer:", arg) elif arg_type is list: print("found list:", arg) else: print("found something:"
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}