PythonのコミュニティーとしてPython大阪の会に携わっていまして、 Scapbox でも PythonOsaka に資料を多数アップしていています。
Python@Osaka としたのはアットマーク( @ )が蛇がとぐろを巻いていようにも見えることと、 大阪でのコミュニテイーを表すのにちょうどよいと思ったしだいです。
PythonのコミュニティーとしてPython大阪の会に携わっていまして、 Scapbox でも PythonOsaka に資料を多数アップしていています。
Python@Osaka としたのはアットマーク( @ )が蛇がとぐろを巻いていようにも見えることと、 大阪でのコミュニテイーを表すのにちょうどよいと思ったしだいです。
try: | |
# python 3.8 or later | |
from functools import singledispatchmethod | |
except ImportError: | |
from functools import singledispatch, update_wrapper | |
def singledispatchmethod(func): | |
dispatcher = singledispatch(func) | |
def wrapper(*args, **kw): | |
return dispatcher.dispatch(args[1].__class__)(*args, **kw) |
In [1]: from datajuggler import serializer as io | |
In [2]: io.read_contents('sqlite:///users.sqlite#users') | |
Out[2]: | |
[{'id': 1, 'name': 'David Coverdale', 'age': 71, 'belongs': 'Whitesnake'}, | |
{'id': 2, 'name': 'Neal Schon ', 'age': 68, 'belongs': 'Journey'}, | |
{'id': 3, 'name': 'Tom Scholz', 'age': 75, 'belongs': 'Boston'}, | |
{'id': 4, 'name': 'David Gilmour', 'age': 75, 'belongs': 'Pink Floyd'}, | |
{'id': 5, 'name': 'Ann Wilson', 'age': 71, 'belongs': 'Heart'}, | |
{'id': 6, 'name': 'Nacy Wilson', 'age': 67, 'belongs': 'Heart'}] |
In [8]: # %load users_class.py | |
...: class User: | |
...: | |
...: def __init__(self, *nargs, **kwargs): | |
...: self.data = dict(*nargs, **kwargs) | |
...: self.id: int = self.data['id'] | |
...: self.name: str = self.data['name'] | |
...: self.age: int = self.data['age'] | |
...: self.belongs: str = self.data['belongs'] | |
...: |
In [4]: class User: | |
...: | |
...: def __init__(self, *nargs, **kwargs): | |
...: self.data = dict(*nargs, **kwargs) | |
...: self.id: int = self.data['id'] | |
...: self.name: str = self.data['name'] | |
...: self.age: int = self.data['age'] | |
...: self.belongs: str = self.data['belongs'] | |
...: |
In [18]: from typing import NamedTuple | |
...: | |
...: try: | |
...: class User(NamedTuple): | |
...: id: int | |
...: name: str | |
...: age: int | |
...: belongs: str | |
...: | |
...: def __init__(self, profile): |
In [20]: from typing import NamedTuple | |
...: | |
...: class UserBase(NamedTuple): | |
...: id: int | |
...: name: str | |
...: age: int | |
...: belongs: str | |
...: | |
...: class User(UserBase): | |
...: def __new__(cls, profile): |
In [1]: from datajuggler import serializer as io | |
In [2]: from dataclasses import dataclass, field | |
...: | |
...: @dataclass | |
...: class User: | |
...: id: int = field(init=False) | |
...: name: str = field(init=False) | |
...: age: int = field(init=False) | |
...: belongs: str = field(init=False) |
In [1]: from datajuggler import serializer as io | |
In [2]: from datajuggler import aDict | |
In [3]: class User(aDict): | |
...: pass | |
...: | |
In [4]: users = io.read_contents('sqlite:///users.sqlite#users',row_type=User) |
In [8]: users[0].freeze() | |
In [9]: try: | |
...: users[0].age=20 | |
...: except AttributeError as e: | |
...: print(e) | |
...: | |
User frozen object cannot be modified. | |
In [10]: |