第二十四章:パッケージ、マルチステート、継承
22806 ワード
パッヶージ
パッケージとは何か
外部に内部の属性を非表示にし、詳細を実装し、外部に使用するインタフェースを提供します.
注意:パッケージには隠す意味がありますが、単純に隠すわけではありません
学習パッケージの目的外部からの内部データへのアクセスを制限できるようにするためです
pythonのプロパティの権限は2つに分けられます
1.公開
誰でもアクセスできる制限はありません
2.プライベート
現在のクラス自体のみがアクセス可能
デフォルトは共通
パッケージ化方法
.................
なぜwhyをカプセル化するの?
1.セキュリティの向上
パッケージ属性
2.分離の複雑さ
パッケージング方法
クラスには2つのデータ、属性、メソッドがあります.
パッケージのプロパティ:
プライベート属性へのアクセスと変更
どのような方法でカプセル化されるべきか
外部に直接アクセスさせるべきではない内部サポート方法は、次の例のuser_authなど...
パッケージの原理:
いつwhereを使いますか.
パッケージ属性
このオブジェクトに機密性のある属性、例えば人の身分証明書の銀行カードのパスワードなどが存在する場合、属性は外部から直接アクセスされるべきではない.
PersonパスワードTeacher給与
パッケージング方法
外部に直接アクセスさせるべきではない内部サポート方法は、次の例のuser_authなど..
Property
≪アクション|Action|oraolap≫:メソッドを通常のプロパティに偽装します.
なぜpropertyでプライベート属性と一般属性にアクセスする方法を一致させたいのか
propertyに関連する2つの装飾器
setter
ポイント構文で属性に値を割り当てるとトリガーされます
deleter
ポイント構文で属性を削除するとトリガーされます
ケース:
propertyのもう一つのシーン計算プロパティの使用
何が属性を計算しますか1つの属性その値は固定的ではありませんて死んだのではありませんて、動的に発生するBMIを計算します
マルチステート:
マルチステートは特定のテクノロジーまたはコードではありません
複数の異なるタイプのオブジェクトが同じメソッドに応答して異なる結果を生成できることを意味します.
ケース:
パッヶージ
パッケージ
パッケージのメリット
パッケージの原理
property
setter deleter
計算プロパティ
マルチステート:
マルチステートとは、複数の異なるタイプのオブジェクトが同じ方法に応答して異なる結果を生成できることを意味する
多態アヒルのタイプを実現する方法
一般的な組み込み関数
はんしゃ
英語では反省と言います(自省)
オブジェクト向けの反省とは、1つのオブジェクトが自分の属性を発見し、自分の属性を修正する能力を備えなければならないことを指す.
オブジェクトは設計の初期に、既存のプロパティを削除または変更し、プロパティを追加する必要がある場合があります.
反射とは、文字列によってオブジェクトのプロパティを操作することです.
関連する方法:
ケース:
ダイナミックインポートモジュール
転載先:https://www.cnblogs.com/haojunliancheng/p/10896381.html
パッケージとは何か
外部に内部の属性を非表示にし、詳細を実装し、外部に使用するインタフェースを提供します.
注意:パッケージには隠す意味がありますが、単純に隠すわけではありません
学習パッケージの目的外部からの内部データへのアクセスを制限できるようにするためです
pythonのプロパティの権限は2つに分けられます
1.公開
誰でもアクセスできる制限はありません
2.プライベート
現在のクラス自体のみがアクセス可能
デフォルトは共通
パッケージ化方法
.................
なぜwhyをカプセル化するの?
1.セキュリティの向上
パッケージ属性
2.分離の複雑さ
パッケージング方法
クラスには2つのデータ、属性、メソッドがあります.
パッケージのプロパティ:
class Student:
def __init__(self,name,age,gender,id_card):
self.name = name
self.age = age
self.gender = gender
self.__id_card = id_card
def show_id_card(self):
#
#
print(self.__id_card)
プライベート属性へのアクセスと変更
class Student:
def __init__(self,name,age,gender,id_card):
self.name = name
self.age = age
self.gender = gender
self.__id_card = id_card
#
def get_id_card(self,pwd):
#
#
if pwd =="123":
return self.__id_card
raise Exception(" !")
#
def set_id_crad(self,new_id):
#
# 18
if isinstance(new_id,str) and len(new_id) == 18:
self.__id_card = new_id
else:
raise Exception(" 18!")
どのような方法でカプセル化されるべきか
外部に直接アクセスさせるべきではない内部サポート方法は、次の例のuser_authなど...
class ATM:
def withdraw(self):
self.__user_auth()
self.__input_money()
self.__save_record()
#
#
#
#
def __user_auth(self):
print(" ....")
def __input_money(self):
print(" 100000000, !")
def __save_record(self):
print(" ....")
パッケージの原理:
python
_ _Person__id_card
いつwhereを使いますか.
パッケージ属性
このオブジェクトに機密性のある属性、例えば人の身分証明書の銀行カードのパスワードなどが存在する場合、属性は外部から直接アクセスされるべきではない.
PersonパスワードTeacher給与
パッケージング方法
外部に直接アクセスさせるべきではない内部サポート方法は、次の例のuser_authなど..
Property
≪アクション|Action|oraolap≫:メソッドを通常のプロパティに偽装します.
なぜpropertyでプライベート属性と一般属性にアクセスする方法を一致させたいのか
propertyに関連する2つの装飾器
setter
ポイント構文で属性に値を割り当てるとトリガーされます
deleter
ポイント構文で属性を削除するとトリガーされます
ケース:
class Teacher:
def __init__(self,name,age,salary):
self.name = name
self.age = age
self.__salary = salary
propertyのもう一つのシーン計算プロパティの使用
何が属性を計算しますか1つの属性その値は固定的ではありませんて死んだのではありませんて、動的に発生するBMIを計算します
class Person:
def __init__(self,name,height,weight):
self.name = name
self.height = height
self.weight = weight
# self.BMI = weight / (height ** 2)
マルチステート:
マルチステートは特定のテクノロジーまたはコードではありません
複数の異なるタイプのオブジェクトが同じメソッドに応答して異なる結果を生成できることを意味します.
:
:
:
OOP :
:
,
person cat pig
:
ケース:
class Cat():
def bark(self):
print(" ")
def run(self):
print(" !")
def sleep(self):
print(" !")
class Pig():
def bark(self):
print(" !")
def run(self):
print(" !")
def sleep(self):
print(" !")
#
def management_animal(animal):
print("================== %s=============" % animal.__class__.__name__)
animal.bark()
animal.run()
animal.sleep()
パッヶージ
パッケージ
*****
とはパッケージのメリット
*****
カプセル化方法パッケージの原理
property
*****
setter deleter
計算プロパティ
マルチステート:
マルチステートとは、複数の異なるタイプのオブジェクトが同じ方法に応答して異なる結果を生成できることを意味する
*****
メリット*****
: ,
person cat pig
多態アヒルのタイプを実現する方法
一般的な組み込み関数
__str__
__del__
"""
__del__
?
1.
2. del
:
,
:__del__
"""
# person
class Person:
def __init__(self,name,path,mode="rt",encoding="utf-8"):
self.name = name
self.file = open(path,mode,encoding=encoding)
#
def read_data(self):
return self.file.read()
def __del__(self):
print("del run!")
self.file.close()
はんしゃ
英語では反省と言います(自省)
オブジェクト向けの反省とは、1つのオブジェクトが自分の属性を発見し、自分の属性を修正する能力を備えなければならないことを指す.
オブジェクトは設計の初期に、既存のプロパティを削除または変更し、プロパティを追加する必要がある場合があります.
反射とは、文字列によってオブジェクトのプロパティを操作することです.
関連する方法:
hasattr
getattr
setattr
delattr
ケース:
class MY_CMD:
def dir(self):
os.system("dir")
def ipconfig(self):
os.system("ipconfig")
cmd = MY_CMD()
while True:
name = input(" :")
if hasattr(cmd,name):
method = getattr(cmd,name)
print(method)
method()
else:
print("sorry this method is not exists....!")
ダイナミックインポートモジュール
"""
import :
import importlib
mk = importlib.import_module(m_name)
mk
"""
転載先:https://www.cnblogs.com/haojunliancheng/p/10896381.html