Pythonの特殊メソッドと反復メカニズムの分析例

WBOY
リリース: 2016-06-16 08:41:58
オリジナル
921 人が閲覧しました

この記事の例では、Python 固有のメソッドと反復メカニズムについて説明しており、参考のために共有されています。具体的な分析は次のとおりです。

ご存知のとおり、Python の設計哲学は「エレガント」、「明確」、「シンプル」です。1 つのことを行うための最良の方法は 1 つだけです。この優雅さは、多くの詳細が自然に隠されているという事実にあります。その後ろに。たとえば、for ステートメントを直接使用して一部のオブジェクトを反復でき、一部のグローバル関数は共通の特性を持つ多くのオブジェクトに作用でき、ジェネレーター デコレーター イントロスペクションなどの機能もあります。これらの実装の多くは Python の内部専用メソッドに依存していますが、外部では統合されたグローバル関数を使用して動作するため、Python は人間の直感に沿って記述しやすくなっています。

Python 固有のメソッド

クラスのプライベート メソッド: 二重ダッシュで始まり、二重アンダースコアで終わらないメソッド
クラス固有のメソッド: 二重アンダースコアで始まり、組み込み関数
によって呼び出されることがよくあります。 モジュールのプライベート オブジェクト: 単一のアンダースコアで始まり、他のモジュールにインポートできません。

#!/usr/bin/env python 
# Python3 实现 
_modeluprivate = '本模块私有'  #不能用 from module import * 导入 
 
class People(): 
  def __myprivate(self): 
    print("This is a private fun") 
  def __test__(self): 
    print('call __private: ',end='') 
    self.__myprivate() 
 
if __name__ == '__main__': 
  a = People() 
  a.__test__()      # 专有方法,一般系统专用,自己的类方法不要用这种新式命名 
  a._People__myprivate() # 私有方法被对外被翻译成了这种名字,从而达到私有的效果 
  print(_modeluprivate) 
   
''''' 
输出 
call __private: This is a private fun 
This is a private fun 
本模块私有 
''' 

ログイン後にコピー

Python の反復メカニズム

Python の反復可能オブジェクトは、__iter__() メソッドを実装するオブジェクトであり、__iter__() メソッドは反復子オブジェクトを返します。__next__() メソッドは反復子オブジェクト内に実装する必要があります。イテレータは、コレクションを走査するための統合インターフェイスを提供し、for ステートメントを使用して直接操作できるため、非常に便利です。一部の特に大規模なコレクションや場合によっては無限のコレクションの場合、反復子はデータ セットの一度のロードを回避し、ほぼ唯一のアクセス方法です。

#!/usr/bin/env python 
# Python3 实现 
class IterTest(): 
  def __init__(self): 
    self.a = 0 
  def __iter__(self): 
    return self 
  def __next__(self): 
    self.a += 1 
    if self.a > 3: 
      raise StopIteration 
    return self.a 
 
if __name__ == '__main__': 
  a = IterTest() 
  for i in a: 
    print(i,end=' ') 
  b = IterTest() 
  print(list(b)) # list()构造器,可以接受可迭代对象 
  c = IterTest() 
  print(next(c), next(c), next(c)) 
 
''''' 
输出 
1 2 3 [1, 2, 3] 
1 2 3 
''' 
ログイン後にコピー

Python のジェネレーターは実際にはイテレーターを返します。また、それに対して next() 関数を使用したり、それに対する for 演算を使用したりすることもできます。これにより、ジェネレーターの作成がより簡単になります。

#!/usr/bin/env python 
# Python3 实现 
def funGenerate(): 
  yield 1 
  yield 2 
  yield 3 
 
if __name__ == '__main__': 
  a = funGenerate() 
  for i in a: 
    print(i, end=' ') 
  b = funGenerate() 
  print(next(b),next(b),next(b)) 
 
''''' 
输出 
1 2 3 1 2 3 
'''

ログイン後にコピー
この記事が皆さんの Python プログラミングの学習に役立つことを願っています。

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