Day20オブジェクト指向の基礎

1.オブジェクト指向の概念

オブジェクト指向とは何ですか

  オブジェクト指向OOPと呼ばれるプログラミングのアイデアは、より良いプログラムを書くためにプログラマーを導くためにどのように、前任者の経験を総括されています

  そのコアは、基本的な操作部プログラムなどのオブジェクトは、プログラムはオブジェクトの集合物であるが、プログラマはこれらのオブジェクトをスケジュールする責任があるタスクを達成するために相互作用

特定のコマンダにオペレータから変更角度でオブジェクト指向のプログラマに

シナリオの使用のオブジェクト指向の長所と短所

  利点:スケーラビリティの向上。オブジェクトが変更された場合、他のオブジェクトは無効です

     柔軟性の向上。例えばゲームは、各プレイヤーは自由に操作ではなく、機械のような固定されている!あなたは武器を購入することができ、あなたも鎧を購入することができます

     改善された再利用。定義されたオブジェクトは、繰り返し使用することができます

  短所:プログラムの複雑化

     私たちは、正確な結果を予測することはできません

  使用する:高いスケーラビリティ要件プログラム、通常、ユーザー志向などQQ、マイクロチャネル、および頻繁に更新ゲームの一部として、

プロセス指向の長所と短所と利用シナリオ

  長所:論理的な、複雑な問題を合理化し、したがって短い答えのことができます

  短所:貧しいスケーラビリティ、保守性、機能を変更する必要があると、それが全体的な機能に影響を与えます

  使用可能:カーネルなど、Gitは、電卓、などの手順の低いスケーラビリティ要件、後半を変更する必要はありませんしたら

注:オブジェクト指向およびプロセス指向と良いか悪いかではないが、その場合を区別するために、特定の用途に応じて

 

2.クラスとオブジェクトの概念

二つの概念の中核で、オブジェクト指向プログラミング(OOP)の線種

カテゴリ

  タイプは、それが同じオブジェクトを持つ特徴や行為の一連のカテゴリです

オブジェクト

  言葉や行動特性を持つ具体的な存在のものが、ある、オブジェクトの特性とスキルの組み合わせがあります

クラスは、一連のオブジェクトが含まれ、オブジェクトはクラスに属し

プログラムの最初のクラスであり、そのオブジェクトを持っていながら、生活の中で、まず、し、オブジェクトクラスがあります

結論:オブジェクト指向プログラミングでは、私たちが作成する必要のあるオブジェクトの特性と動作を考慮して、これらの特性や行動に属するオブジェクトのクラスを作成する必要があります。

 

3.クラスとオブジェクトを作成する方法

クラスとオブジェクトを定義するための構文

1つの #のクラスの構文の定義とオブジェクト
2  クラスのクラス名:   #は、クラスの作成
3      内部コードを彼の特徴および技術(動作)を定義することができる
 4      、請求変数名が表す
 5つの     関数で表されるスキル(行為)
 6。 
7つの。具体的オブジェクト名=クラス名()  特定のオブジェクトを作成します

単純にクラスとオブジェクトを作成します

1つの #は単にオブジェクトとクラスの作成
2  の人を:   #は、これは、このクラスの何が、クラスである
3。     印刷(123 4。      役割=   特性人々のを
5。     DEF(自己を)EAT :   人々が食べている、スキル持って食べる
6          リターンを 食べる
7つの 
8 P1 =人()  のコードが実行されるとき、これは彼がクラスに応じて作成された被験者は、クラスが作成された
9  印刷( p1.eat())  プリントタイプの戻り値は'食べる'関数
10  印刷(p1.role)  Viewクラス属性

 

4.配列設計の属性やプロパティを探します

プロパティのデザイン

1  デザイン項目
2  クラス人:   #は、クラスを定義する
。3      エイジ= 18である   #の属性クラス
4つの     パス
。5  
。6つの P1 =人()  は、オブジェクトを生成する
。7 p1.name = ' SXC '   オブジェクトの特性を増大させる
8。 印刷(P1 .age)
 。9  プリント(p1.name)
 10  
。11 p1.name = ' ZZJ '   属性変更
12である プリント(p1.name)
 13であり、 
14  デル p1.name   属性を削除します
15  
16  印刷(P1。__dict__#1 表示オブジェクトのすべてのプロパティは、属性の名前を除去する
17  
18  プリント(P1。__class__#のクラス情報アクセスオブジェクトを

 

物件検索順序

オブジェクト自身のプロパティを探して起動し、あなたが探しに行くためのクラスを見つけることができません。オブジェクト------> ------クラス>親

 1 # 属性的查找顺序
 2 class Person:  # 定义一个类
 3     age = 18  # 类的属性
 4     pass
 5 
 6 p1 = Person()  # 生成一个对象
 7 p1.age = 20  # 对象中的属性
 8 print(p1.age)  # 此时打印的是对象的属性
 9 
10 del p1.age  #删除对象中的属性
11 print(p1.age)  # 此时打印的就是类的属性了

 

5.初始化方法

什么是初始化方法

  用于为对象的属性设置初始值的函数,__init__方法

为什么需要初始化方法

  在类的实例(对象)中,一些属性是必须存在的,就可以用初始化函数来完成,如人的姓名

特点:当实例化对象时,会自动执行__init__方法,会自动将对象作为第一个参数传入。

初始化对象的属性

 1 # 初始化方法
 2 class Student:
 3     def __init__(self,name,age,sex):  # 初始化方法
 4         self.name = name
 5         self.age = age
 6         self.sex = sex
 7 
 8 s1 = Student('sxc', 18, 'male')
 9 s2 = Student('zzj', 19, 'male')
10 print(s1.name)  # 查看属性
11 print(s2.age)

注意:初始化函数不能有返回值,他只能返回None,不写return和只写return和return None都可以,但是一般默认不写

 

6.绑定方法之对象的绑定方法

在累中定义的函数方法默认都对象绑定方法,并且没有被任何装饰器装饰

特点:当使用对象调用该函数时会自动传入对象本身作为第一个参数

   当使用类名来调用时他就是一个普通的函数,有几个参数就要传入几个参数

 1 # 对象绑定方法
 2 class Student:
 3     def __init__(self,name,age,sex):  # 初始化方法
 4         self.name = name
 5         self.age = age
 6         self.sex = sex
 7 
 8     def say(self):
 9         print('我是%s,我的年龄是%s,我的性别是%s'%(self.name,self.age,self.sex))
10 
11 s1 = Student('sxc',18,'')
12 s1.say()  # 对象直接调用会将本身作为参数
13 
14 Student.say(s1)  # 类名来调用需要传入参数

 

7.绑定方法之类的绑定方法

用classmethod装饰器装饰的方法就是类绑定方法

特点:不管用类还是对象调用,参数的第一个必须是cls表示当前类本身,使用类名来调用,调用时会自动传入类

 1 # 类绑定方法
 2 class Student:
 3     def __init__(self,name,age,sex):  # 初始化方法
 4         self.name = name
 5         self.age = age
 6         self.sex = sex
 7 
 8     @classmethod
 9     def say(cls,self):
10         print('我的类是%s,我是%s,我的年龄是%s,我的性别是%s'%(cls,self.name,self.age,self.sex))
11 
12 s1 = Student('sxc',18,'')
13 s1.say(s1)  # 自动传入类
14 
15 Student.say(s1)  # 自动传入类

 

8.非绑定方法(不常用)

用staticmethod装饰器装饰的方法就叫做非绑定方法,不需访问类的数据,也不需要访问对象的数据 

 1 # 非绑定方法
 2 class Student:
 3     def __init__(self,name):  # 初始化方法
 4         self.name = name
 5 
 6     @staticmethod  # 非绑定方法
 7     def msg():
 8         print('i am a student')
 9 
10 s1 = Student('sxc')  # 定义一个对象
11 
12 Student.msg()  # 类可以直接调用,不需要传参数
13 
14 s1.msg()  # 对象可以直接调用,不需要传参数

 

おすすめ

転載: www.cnblogs.com/sxchen/p/11241339.html