オブジェクト指向開発を学ぶためにゼロからPython-- 3

オブジェクト指向開発を学ぶためにゼロからPython-- 3

太原理工大学のロボット工学チーム20パンチカードday11

1、クラスメソッドとクラス属性

1.1オブジェクトの特別なクラスであります

でPythonのすべてが対象です。

  • クラスAAA:定義されたカテゴリが属するクラスオブジェクトに
  • 属するOBJ1 = AAA()インスタンスオブジェクト
  • このプログラムは、実行されているタイプと同じにメモリにロードされます
  • Pythonでは、クラスが -特別なオブジェクトであるクラスオブジェクト
  • プログラムを実行すると、クラスオブジェクトのメモリ内には、一つだけの使用クラスが作成できるオブジェクトのインスタンスの数を
  • パッケージに加えて、属性外とメソッド、クラスオブジェクトは、それ自身の持つことができる属性メソッドを
    1. クラスのプロパティ
    2. クラスメソッド
  • することで、クラス名。あなたができる方法アクセスクラス属性メソッドは、クラスを呼び出します

1.2インスタンスの属性とクラス属性

  • Class属性は、あるクラスのオブジェクト定義された属性
  • 一般的に記録するために使用され、このクラスに関連する機能
  • ないためのクラス属性記録特定のオブジェクトの特性を

例:このクラスのオブジェクトの数を記録するために

class Tool(object):

	# 使用赋值语句,定义类属性,记录创建工具对象的总数
	count = 0

	def __init__(self, name):
		self.name = name
		
		# 针对类属性做一个计数+1
		Tool.count += 1

# 创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")
tool3 = Tool("铁锹")

# 知道使用 Tool 类到底创建了多少个对象?
print("现在创建了 %d 个工具" % Tool.count)

1.3クラスメソッドと静的メソッド

  • クラスプロパティのためにあるクラスオブジェクトの属性の定義
    • 使用代入文を定義するクラスのキーワードの下のクラス属性を
    • Class属性記録するため、このクラスに関連する機能
  • クラスメソッドは、のためにあるクラス・オブジェクト定義されたメソッド
    • クラスメソッド内部に直接アクセスすることができるクラスのプロパティを、または他の呼び出しクラスメソッド

構文

@classmethod
def 类方法名(cls):
	pass
  • クラスメソッドが必要とデコレータは、識別され@classmethod これは、クラスメソッドであるインタプリタを語りました
  • クラスメソッドの最初のパラメータは、 CLSする必要があります
    • うちどのクラスのメソッド呼び出し、方法でCLSは、どのクラスの参照
    • このパラメータとの例示的な方法の最初のパラメータは同様の自己であります
    • ヒント別の名前をすることができますが、CLSを使用しての習慣
  • することで、クラス名。呼び出しのクラスメソッドメソッドを呼び出すときに、パラメータは、CLSに合格する必要があります
  • メソッド内で
  • CLSによる。属性アクセスクラス
  • また、CLSすることができます。クラスの他のメソッドを呼び出します

例の需要

  • 定義ツール
  • 各ツールは、独自の名前を持っています
  • 需要で- クラスこのクラスの出力電流を用いて、show_tool_countをパッケージ化する方法のオブジェクトクラスの数は、作成します
@classmethod
def show_tool_count(cls):
	"""显示工具对象的总数"""
	print("工具对象的总数 %d" % cls.count)

クラスメソッド内で、直接アクセスCLSを使用することができるクラスのプロパティを、またはクラスメソッドを呼び出します

1.4静的メソッド

  • 開発中に所望であれば、クラスメソッドそれをカプセル化します。
    • だけでなく、する必要はありませんアクセスするインスタンスのプロパティをまたはお電話インスタンスメソッドを
    • また、あなたがする必要はありませんアクセスクラスのプロパティをまたは呼び出すことでクラスメソッドを
  • 今回は、この方法は、以下のように包装することができる静的メソッド

構文

@staticmethod
def 静态方法名():
	pass
  • 静的メソッド必要なデコレータは特定され@staticmethodが、これは静的メソッドであるインタプリタを語りました
  • することで、クラス名。呼び出し静的メソッド
class Dog(object):
	
	# 狗对象计数
	dog_count = 0

	@staticmethod
	def run():

		# 不需要访问实例属性也不需要访问类属性的方法
		print("狗在跑...")
	
	def __init__(self, name):
		self.name = name

図2に示すように、異常な

  • 実行時にプログラムで、Pythonインタプリタがあれば検出した異常であるエラー、停止プログラムの実行、およびプロンプト一部の誤った情報を、
  • プログラムが実行を停止し、エラーメッセージこのアクションは、我々は通常、呼び出し:投(レイズ)の異常

2.1例外をキャッチ

  • プログラム開発は、場合、いくつかのコードの実行を正しく判断することができない、してみてください(TRY)を増やすことができ、例外をキャッチ
  • キャッチ例外最も簡単な構文は次のとおりです。
try:
	尝试执行的代码
except:
	出现错误的处理
  • しようと試して、コードが正常に実行できるかどうか不確かな、以下のコードを記述しようとすると、
  • 除く外でない場合試みが失敗したの下、書き込みコードを

エラートラップのタイプ

  • プログラムの実行中に、あなたが発生する可能性のあるさまざまな例外のタイプ、および必要な例外の種類ごとに異なる応答、この時間は、我々は、エラーの種類をキャプチャする必要があります
  • 構文は次のとおりです。
try:
	# 尝试执行的代码
	pass
except 错误类型1:
	# 针对错误类型1,对应的代码处理
	pass
except (错误类型2, 错误类型3):
	# 针对错误类型2 和 3,对应的代码处理
	pass
except Exception as result:
	print("未知错误 %s" % result)
  • Pythonインタプリタは、ときに例外をスローしエラーメッセージの最後の行の最初の単語は、タイプが間違っています

不明なエラーをキャプチャ

  • 開発では、すべての可能なエラーを予測するために、またはいくつかの困難を持っています
  • あなたがしたい場合にプログラムエラーが発生したにかかわらず、 Pythonインタプリタがあるため、しません例外が終了したスロー、あなたは別のものを除いて追加することができます

構文は次のとおりです。

except Exception as result:
	print("未知错误 %s" % result)

完全な構文異常キャプチャ

  • 次のように実際の開発では、複雑な異常に対処できるようにするために、異常な完全な構文は次のとおりです。

ヒント:

  • シナリオの完全な構文については、実際の例と組み合わせるフォローアップ研究は、よりよく理解されるであろう中
  • 今、この文法構造の第一印象があります
try:
	# 尝试执行的代码
	pass
except 错误类型1:
	# 针对错误类型1,对应的代码处理
	pass
except 错误类型2:
	# 针对错误类型2,对应的代码处理
	pass
except (错误类型3, 错误类型4):
	# 针对错误类型3 和 4,对应的代码处理
	pass
except Exception as result:
	# 打印错误信息
	print(result)
else:
	# 没有异常才会执行的代码
	pass
finally:
	# 无论是否有异常,都会执行的代码
	print("无论是否有异常,都会执行的代码")
  • 異常が実行されませんがあるだけで、他のコード
  • 最後に、実行される例外コードがあったか否か
  • 行使に先立ち、完全なキャプチャ異常コードは以下の通りです
try:
	num = int(input("请输入整数:"))
	result = 8 / num
	print(result)
except ValueError:
	print("请输入正确的整数")
except ZeroDivisionError:
	print("除 0 错误")
except Exception as result:
	print("未知错误 %s" % result)
else:
	print("正常执行")
finally:
	print("执行完成,但是不保证正确")

2.2異常転写

  • 異常転写 -とき関数/メソッドの実行例外が発生し、それがされます例外を渡す機能/メソッドへの呼び出しパーティー
  • 場合は、メインプログラムへの転送は、まだありません例外ハンドラ、プログラムが終了します

プロンプト

  • 開発では、主な機能の中で増加する異常キャプチャ
  • 他の関数呼び出しは、メイン関数であれば異常と、メイン関数に渡される捕捉異常
  • これは数増加するコードに必要がなくなり、例外トラップをクリーンなコードを確保するために、

需要

  1. DEMO1定義された関数は、()ユーザを促し、整数を返します
  2. 定義された関数のDEMO2()呼び出しDEMO1()
  3. メインでDEMO2コール()
def demo1():
	return int(input("请输入一个整数:"))

def demo2():
	return demo1()

try:
	print(demo2())
except ValueError:
	print("请输入正确的整数")
except Exception as result:
	print("未知错误 %s" % result)

2.3は、例外を発生させるスロー

  • 開発では、に加えて、コード実行エラー Pythonインタプリタスロー例外よりも、
  • あなたもできる例外アプリケーション固有のビジネスニーズを投げるためのイニシアチブをとります

例外を投げます

  • Pythonは例外クラスの例外が設けられています。
  • 開発では、満たす特定のビジネスニーズあれば、我々は例外をスローするように望んでいる、次のことができます。
    1. 例外のオブジェクトを作成します。
    2. キーワード昇給投げられたオブジェクトを使用します
公開された12元の記事 ウォン称賛51 ビュー10000 +

おすすめ

転載: blog.csdn.net/soul_study/article/details/104766857