pythonのパッケージ
10586 ワード
参照先:https://www.cnblogs.com/feeland/p/4415645.htmlパッケージの目的は、プライバシーを守り、他人に知られたくないものをパッケージすることです.
Studentクラスとインスタンス化が定義され、各インスタンスにはそれぞれのnameとscoreがあります.学生の成績を印刷する必要がある場合は、関数print_を定義します.score()は、クラス外の関数です.
Studentインスタンス自体がこれらのデータを持っている以上、これらのデータにアクセスするには、外部の関数からアクセスする必要はありません.Studentクラスの内部でデータにアクセスする関数を直接定義することができます.これで、データを「カプセル化」しました.「カプセル化」は抽象的に得られたデータと行為(または機能)を結合し、有機的な全体(すなわちクラス)を形成することである.パッケージの目的は、セキュリティの強化とプログラミングの簡素化です.ユーザーは、特定の実装の詳細を理解する必要はありません.外部インタフェース、特定のアクセス権を通じてクラスのメンバーを使用するだけです.
これらのカプセル化データの関数はStudentクラス自体に関連付けられており,クラスと呼ぶ方法である.では、クラスのメソッドをどのように定義しますか?オブジェクトself自体を使用するには、前例を参照してprint_score()関数をクラスと書く方法(Python 2.7以降のバージョン、推奨.format出力書き方):
クラスを定義する方法:最初のパラメータがselfである以外は、通常の関数と同じです.インスタンス呼び出し方法:selfが渡さない以外は、インスタンス変数で直接呼び出す必要があります.他のパラメータは正常に入力されます.クラスのメソッドがselfのみで、他に必要ない場合はinstance_のみが呼び出されます.name.function_name()これにより、外部からStudioクラスを見ると、インスタンスの作成にはnameとscoreが必要であり、どのように印刷するかは、Studioクラスの内部で定義されており、これらのデータと論理は「カプセル化」されており、呼び出しは容易であるが、内部実装の詳細は知らない.
パッケージのもう一つの利点は、Studentクラスに新しい方法を追加できることです.こちらの方法では、compare関数を新たに定義するなど、パラメータを要求することもできます.以下のようにします.
Studentクラスとインスタンス化が定義され、各インスタンスにはそれぞれのnameとscoreがあります.学生の成績を印刷する必要がある場合は、関数print_を定義します.score()は、クラス外の関数です.
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
May = Student("May",90) #
Peter = Student("Peter",85)
print(May.name, May.score)
print(Peter.name, Peter.score)
def print_score(Student): # print_score(Student)
# print("%s's score is: %d" %(Student.name,Student.score)) # print
print("{0}'s score is: {1}".format(Student.name,Student.score)) # Python 2.7 + .format
print_score(May)
print_score(Peter)
Studentインスタンス自体がこれらのデータを持っている以上、これらのデータにアクセスするには、外部の関数からアクセスする必要はありません.Studentクラスの内部でデータにアクセスする関数を直接定義することができます.これで、データを「カプセル化」しました.「カプセル化」は抽象的に得られたデータと行為(または機能)を結合し、有機的な全体(すなわちクラス)を形成することである.パッケージの目的は、セキュリティの強化とプログラミングの簡素化です.ユーザーは、特定の実装の詳細を理解する必要はありません.外部インタフェース、特定のアクセス権を通じてクラスのメンバーを使用するだけです.
これらのカプセル化データの関数はStudentクラス自体に関連付けられており,クラスと呼ぶ方法である.では、クラスのメソッドをどのように定義しますか?オブジェクトself自体を使用するには、前例を参照してprint_score()関数をクラスと書く方法(Python 2.7以降のバージョン、推奨.format出力書き方):
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def print_score(self):
print("{self.name}'s score is: {self.score}".format(self=self)) # Python 2.7 + .format
May = Student("May",90)
Peter = Student("Peter",85)
クラスを定義する方法:最初のパラメータがselfである以外は、通常の関数と同じです.インスタンス呼び出し方法:selfが渡さない以外は、インスタンス変数で直接呼び出す必要があります.他のパラメータは正常に入力されます.クラスのメソッドがselfのみで、他に必要ない場合はinstance_のみが呼び出されます.name.function_name()これにより、外部からStudioクラスを見ると、インスタンスの作成にはnameとscoreが必要であり、どのように印刷するかは、Studioクラスの内部で定義されており、これらのデータと論理は「カプセル化」されており、呼び出しは容易であるが、内部実装の詳細は知らない.
パッケージのもう一つの利点は、Studentクラスに新しい方法を追加できることです.こちらの方法では、compare関数を新たに定義するなど、パラメータを要求することもできます.以下のようにします.
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def print_score(self):
print("{self.name}'s score is: {self.score}".format(self=self)) # Python 2.7 + .format
def compare(self,s):
if self.score>s:
print("better than %d" %(s))
elif self.score==s:
print("equal %d" %(s))
else:
print("lower than %d" %(s))
May = Student("May",90)
Peter = Student("Peter",85)
May.print_score()
Peter.print_score()
May.compare(100)
May.compare(90)
May.compare(89)