Pythonのオブジェクト型判定と関数のオーバーロード

高洛峰
リリース: 2016-10-19 14:57:29
オリジナル
1342 人が閲覧しました

1. オブジェクトの型を決定します

オブジェクトの型は type 関数を通じて知ることができます:

x = 'Hello'
s = type(x)
print s
x = 'Hello'
s = type(x)
print s
ログイン後にコピー

2. 関数を作成するとき、よく遭遇します。異なるパラメータのタイプや異なる数のパラメータの場合に対処する必要があります。

C++では、通常、同じ名前でパラメータが異なる複数の関数を定義してオーバーロードを実現します

しかし、Pythonでのオーバーロードは、パラメータの型判定+デフォルト値という別の方法で実現できます

import os, sys
def tracelog(s='', n=40):
    if isinstance(n, int):
        print '-'*n
    else:
        print '-'*40
    if isinstance(s, str):
        print s
    elif isinstance(s, list):
        s1 = ''
        for x in s:
            s1 = s1 + ' ' + x
        print s1
   
def main():
    tracelog(n=50)
    tracelog(sys.argv)
    tracelog(n=20)
ログイン後にコピー

main( )

import os, sys
  
def tracelog(s='', n=40):
    if isinstance(n, int):
        print '-'*n
    else:
        print '-'*40
    if isinstance(s, str):
        print s
    elif isinstance(s, list):
        s1 = ''
        for x in s:
            s1 = s1 + ' ' + x
        print s1
  
def main():
    tracelog(n=50)
    tracelog(sys.argv)
    tracelog(n=20)
main()
ログイン後にコピー

上記のコードは、tracelog 関数を定義します。この関数は、s パラメーターを文字列またはリストとして出力し、指定された長さの水平線を出力することもできます。その中には次のものがあります。 isinstance 関数 これは、オブジェクトが特定のタイプであるかどうかを判断するために使用される関数であり、2 番目のパラメーターはオブジェクト タイプであり、type 関数を通じてクエリできます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート