yaml_data = yaml.safe_load_all("""name: John Doe
age: 30
---
name: Jane Smith
age: 25
---
name: Bob Johnson
age: 40""".strip())
for y in yaml_data:
print(y)
"""
{'name': 'John Doe', 'age': 30}
{'name': 'Jane Smith', 'age': 25}
{'name': 'Bob Johnson', 'age': 40}
"""
class sample1:
def __init__(self, name):
self.name = name
def __del__(self):
print(f"インスタンス: {self.name} を破棄しました。")
def identity(self, x):
return x
a = sample1("a")
print(a.identity(5))
# 5
del a
# インスタンス: a を破棄しました。
デストラクターがちゃんと呼び出されていますね。
これが、メソッドがメモ化されていたらどうなるのかやってみます。
from functools import lru_cache
class sample2:
def __init__(self, name):
self.name = name
def __del__(self):
print(f"インスタンス: {self.name} を破棄しました。")
@lru_cache(maxsize=None)
def identity(self, x):
return x
b = sample2("b")
print(b.identity(5))
# 5
del b
# 何も表示されない。
import os
home_directory = (
os.environ.get('HOME') or
os.environ.get('HOMEPATH') or
os.environ.get('USERPROFILE')
)
print(home_directory)
# /Users/yutaro