Python始めたてでふわっとしていたので自分なりにまとめてみました。
環境
- Python 3.7.3
色々試してみる
dictの場合
foo = {
'a': 1, 'b': 2, 'c': 3
}
print(foo.get('a')) # 1
print(foo.get('d')) # None
print(foo['a']) # 1
print(foo['d']) # Exception has occurred: KeyError
print(foo.a) # Exception has occurred: AttributeError
print(foo.d) # Exception has occurred: AttributeError
# getだとExceptionが出ずに`None`を返してくれるので、if文とかで便利
if foo.get('d') is None:
print(True)
foo['d']
でいけるならfoo.d
でもいけそうな気がしてしまうjavascriptユーザー
クラス・インスタンスメソッドの場合
.
でのアクセスは、
Pythonではクラスメソッド・インスタンスメソッドへアクセスでのみ使うことができるらしい。
ついでにget
はdictのメソッドなので使えない。
class Foo:
bar = 'bar'
def __init__(self):
self.baz = 'baz'
foo = Foo()
print(foo.bar) # bar(クラス変数)
print(foo.baz) # baz(インスタン卯変数)
print(foo.get('bar')) # Exception has occurred: AttributeError
print(foo.get('baz')) # Exception has occurred: AttributeError