python魔法の方法の紹介
5714 ワード
魔法の方法はpthonの中の類の中でいくつか_xxx__()この形式の関数.強力な機能.
1つ目はもちろん初期の作成方法1.init__(self[,])クラスを初期化し,意味が自明である.
2. __str__(self[,])と_repr__(self[,])
結果:
結論:両方ともクラスのいくつかの情報を得るためにビット文字を変換する関数であり、
結果:
3. __call__(self[,])この方法は,作成されたオブジェクトを関数として呼び出すことができるようにする.
4. __name__ 実は方法ではなく、内蔵変数です.1つだけ:このpyファイルが実行されると、
結果:
「Make a script both importable and executable」はpythonに本当の入り口があるように見せましょう(C/C+/JAVAのように)
続きます...
1つ目はもちろん初期の作成方法1.init__(self[,])クラスを初期化し,意味が自明である.
2. __str__(self[,])と_repr__(self[,])
__str__(a)
はstr(a)
に等価である.__repr__(a)
は、repr(a)
と等価であり、両方ともインスタンスオブジェクトを文字列に変換するツールであり、__str__()
はユーザに対してである.__repr__()
は開発者向けです.__str__()
がデフォルトの場合、__repr__()
関数が呼び出されます.class Test():
def __init__(self, name):
self.name = name
def __str__(self):
# print(object) , __str__
# __str__ , str(self), str
return 'test __str__'
def __repr__(self):
return 'test __repr__'
a = Test('testname')
print(a)
print([a])
結果:
test __str__
[test __repr__]
結論:両方ともクラスのいくつかの情報を得るためにビット文字を変換する関数であり、
str()
のような文字に直接処理するとprint()
が呼び出される.クラスを文字に直接処理しないと、リスト、tuple、dictなどになってから印刷して、__str__
を呼び出してもいいですよ.ユーザーがリスト、tupleなどを游んでくれても、何なのか分かりません.次のような違いがあります.import datetime
today = datetime.date.today()
print(str(today))
print(repr(today))
結果:
2019-01-06
datetime.date(2019, 1, 6)
__repr__
は、認識度の高い文字列を容易に認識することができる.str()
はpythonに格納して実行できる文字列を得る.だから一斑も見えます.3. __call__(self[,])この方法は,作成されたオブジェクトを関数として呼び出すことができるようにする.
4. __name__ 実は方法ではなく、内蔵変数です.1つだけ:このpyファイルが実行されると、
repr()
は__name__
です.importのmoduleである場合、__main__
はファイル名である.# test.py
def main():
print('name:', __name__)
if __name__ == '__main__':
main()
# :name:__main__
# test_name.py
import test
def main():
print('name:', __name__)
if __name__ == '__main__':
test.main()
main()
結果:
name: test
name: __main__
「Make a script both importable and executable」はpythonに本当の入り口があるように見せましょう(C/C+/JAVAのように)
続きます...