オブジェクト指向プログラミングのコアコンセプト:カプセル化、抽象化、ポリモーフィズム、継承、構成
パッケージ:
最初の概念:オブジェクト指向プログラミングでは、オブジェクトは変数とメソッドを1つの場所、つまりオブジェクト自体に集中させます。
2番目の概念:クライアントコードによる直接アクセスを回避するために、非表示クラスの内部データを参照します。
1class Data:
2 def __init__(self):
3 self.list1=[22,33,44,55,66]
4
5 def chang_list(self,index,num):
6 self.list1[index]=num
7
8data1=Data()
9data1.list1[0]=100
10print(data1.list1)
11
12data2=Data()
13data2.chang_list(0,100)
14print(data2.list1)
概要:
それは、最も基本的な物質だけが保持されるように、物事の多くの特性を取り除くプロセスを指します。オブジェクト指向プログラミングでは、クラスを使用してオブジェクトをモデル化するときに抽象的な手法が使用されます。
1import abc
2class Animal(metaclass=abc.ABCMeta):
3 @abc.abstractmethod #抽象的对象方法
4 def sound(self):
5 pass
6 @abc.abstractclassmethod#抽象的类方法
7 def test1(cls):
8 pass
9 @abc.abstractstaticmethod#抽象的静态方法
10 def test2(self):
11 pass
12
13class Dog(Animal):
14 def sound(self):
15 print("wang wang")
16
17 @classmethod
18 def test1(cls):
19 print("class of method")
20
21 @staticmethod
22 def test2():
23 print("static of method")
24
25dog=Dog()
26dog.sound()
27dog.test1()
28Dog.test1()
29dog.test2()
30Dog.test2()
継承:
1)パブリック属性とメソッドを親クラスに配置し、一意の属性とメソッドのみを考慮します。
2)親クラスのメソッドをオーバーライドするということは、親クラスのメソッドをオーバーライドすることを意味します。操作中には、親クラスのメソッドを呼び出さずに、サブクラスのオーバーライドされたメソッドのみが呼び出されます。
3)親クラスを持つサブクラスは、単一継承と呼ばれます。サブクラスは、複数の親クラスを持つことができ、親クラスのすべてのプロパティとメソッドを持つことができます。
1class Student:
2 def study(self):
3 print("学生要学习")
4 def practice(self):
5 print("学习完成要练习")
6
7class HighStudent(Student):
8 def study_compute(self):
9 print("高中同学还要学习计算机")
10
11hs=HighStudent()
12hs.study()
13hs.practice()
14hs.study_compute()
ポリモーフィズム:
1)。これは、さまざまな基本形式(データ型)のインターフェイスを提供する機能を指します。インターフェイスは、関数とメソッドを指します。
2)名前が示すように、ポリモーフィズムは複数の症状を意味し、それはメカニズムであり、機能であり、キーワードではありません。これはクラスの継承で実現され、クラスのメソッド呼び出しに反映されます。
3)ポリモーフィズムとは、変数が参照オブジェクトが何であるかを認識しておらず、参照オブジェクトに応じて動作が異なることを意味します。
4)ポリモーフィズムは、カプセル化と継承に基づいています。異なるサブクラスオブジェクトが同じメソッドを呼び出し、異なる実行効果を生成します。親クラスのメソッドを継承してオーバーライドするという前提に基づいて、コードの柔軟性を高めることができます。メソッドを呼び出しても、クラスの内部設計には影響しません。
1class Animals(object):
2 def __init__(self,name):
3 self.name=name
4 def eat(self):
5 print(self.name+" is eating")
6class Cat(Animals):
7 def __init__(self,name):
8 super(Cat, self).__init__(name)
9class Pig(Animals):
10 def __init__(self,name):
11 super(Pig, self).__init__(name)
12
13class Person():
14 def feedAnimal(self,animal):
15 animal.eat()
16
17cat=Cat("tom")
18pig=Pig("peiqi")
19tony=Person()
20tony.feedAnimal(cat)
21tony.feedAnimal(pig)
組み合わせ:
1)組み合わせ手法を使用して、あるオブジェクトの関数変数を別のオブジェクトに保存することにより、所有権の関係をシミュレートできます。
2)。これは、オブジェクトまたはクラスをより複雑なデータ構造またはコンポーネントに結合する方法です。
3)組み合わせて、オブジェクトを使用して他のモジュールのメンバー関数を呼び出すことができるため、基本関数のモジュール間呼び出しを継承せずに実現できます。
1class Monkey():
2 def __init__(self,name,owner):
3 self.name=name
4 self.owner=owner
5
6class Persons():
7 def __init__(self,name):
8 self.name=name
9
10mike=Persons("mike")
11mickMouse=Monkey("goldeMonkey",mike)
12print(mickMouse.owner.name)
13
14class A(object):
15 def a1(self):
16 print("a1")
17class B(object):
18 def b1(self):
19 print("b1")
20 A().a1()
21bb=B()
22bb.b1()
総括する:
今日お話しするのは、オブジェクト指向プログラミングのコアコンセプトであるカプセル化、抽象化、ポリモーフィズム、継承、構成です。コード例を組み合わせてローカルで実行し、これらのコンセプトの意味を感じることができます。
[The Way of Infinite Testing]パブリックアカウントへの注目、[リソースの受信]への返信、
Pythonプログラミング学習リソースの乾物、
Python + AppiumフレームワークAPPUI自動化、
Python + Seleniumフレームワーク
WebUI自動化、Python + UnittestフレームワークAPIへようこそオートメーション、
リソースとコードは無料で送信されます〜
記事の下部に公式アカウントのQRコードがあります。WeChatでスキャンしてフォローするだけです。
備考:私の個人公開アカウントが正式に開設され、ビッグデータテスト、機能テスト、テスト開発、APIインターフェイスの自動化、テストの運用と保守、UI自動化テストなどのテストテクノロジーの共有に専念しています。WeChat検索パブリックアカウント:「WuliangThe Way of Testing」、または以下のQRコードをスキャンしてください。
注意を向けて、一緒に成長しましょう!