オブジェクト指向プログラミング、オブジェクトクラス、および
まず、オブジェクト指向
1.オブジェクト指向とは何ですか
オブジェクト指向プログラミングは、思考の種類は、より良いプログラムを書くためにプログラマーを導くためにどのように、前任者の経験を総括され、
コアは、プログラマがタスクと対話するためにこれらのオブジェクトをスケジュールする責任があり、プログラムの目的は、オブジェクトのコレクションです。
2、いくつかの例
ケース1:冷蔵庫に入れ象?
プロセス指向:
1.冷蔵庫を開きます
2.ロード象
3.冷蔵庫を閉じます
オブジェクト指向:
象のスキルを搭載したオブジェクトを探します
概要:特定のオペレータに導体からオブジェクト指向のプログラマの視点の変化、
オブジェクトは薄い空気の外に作成されていない、我々は自分自身を設計する必要があります。彼が強調しました
ケース2 ::仏教の経典
如来広がるために壊れた本の山があり、彼はそれを自分でやったが、彼を助けるために5つのオブジェクトを見つけるために、
如来限り、オブジェクトはスケジューリングを制御するための責任を負うことができて
オブジェクトが変更された場合、それは他のオブジェクトには影響しません、スケーラビリティ
ケース3 ::曹操の詩、詩は、彼の男性が木に刻まについて説明する命じ
初日:肉や飲み物、生活Zhenshuang
次の日:肉や飲み物、生活のジオメトリ
三日目:ワインと歌、人生のジオメトリ
3、オブジェクト指向の3つの主要な利点
1.スケーラビリティ
2.柔軟性
3.再利用
短所:
1.プログラムの複雑さを向上させます
2.正確な結果を予測できません
図4に示すように、使用シナリオ
例えば、典型的には直接ユーザに手順の高いスケーラビリティ要件、:QQ、マイクロチャネル
第二に、プロセス指向プログラミングのアイデア
図1に示すように、コアの問題は、プロセスであります
プロセスは、ステップバイステップでやって実行する前に、両方の、ステップであります
2、長所と短所
利点:明確なロジック、複雑な問題を単純化、プロセス
短所:貧しいスケーラビリティ、保守性
3、使用シナリオ
システムのカーネル、gitの、電卓次のような下方延長プログラムの要件
すべてのプログラムのオブジェクト指向ではないと、特定のニーズの分析があります覚えておいてください
(OOPの概念の中核である)第三の、クラスおよびオブジェクト
1、クラス
どちらのタイプも、カテゴリは、抽象的な概念であります
これは、同じ機能を持つコレクションおよびオブジェクトの動作と同じです
2、オブジェクト
事は、特定の存在、自分の特性や行動を持っています
オブジェクトは、特性とスキルの組み合わせです
3、クラスとオブジェクト間の関係
クラスには、一連のオブジェクトが含まれています
オブジェクトは、クラスに属します
人生の中で最初にして、オブジェクトのクラスがあります
プログラムでオブジェクトを持っているために、最初のクラスですが、私たちはどのような行動オブジェクト機能のコンピュータどのように伝える必要があり
要約結論:オブジェクト指向プログラミングを使用する場合は、最初のステップは、オブジェクトのニーズの種類について考えることで、に従って必要な情報の種類をまとめた特性や行動を持つオブジェクトの種類、
4、クラスとオブジェクトを作成します
クラスを定義するための構文
class 类的名称:
# 类中的内容 描述属性和技能
#描述属性用变量
#描述行为用函数
#类名称 书写规范 首先是见名知意 名称是大驼峰命名法
#驼峰就是单词首字母大写 , 大驼峰是第一个字母大写,小驼峰是第一个字母小写
オブジェクト構文を作成します。
class Person:
pass
#创建对象
p = Person()
プロパティの文言:
# 属性可以写在类中
# 类中的属性,是所有对象公共的
# 也可以写在对象中
# 对象中的属性,是每个对象独特的(不一样的)
# 如果类中和对象中存在同样的属性,先访问对象 如果没有在访问类
# 练习: 描述一个老师类 需要包含 一个公共属性和 一个独特的属性
class Teacher:
school = "oldboy"
t1 = Teacher()
t1.name = "jack"
t1.age = 28
削除は、検索属性変更します
# 增加属性
# 对象变量名称.属性名称 = 属性值
# 删除属性
del 对象的变量名称.属性名称
# 修改
对象.属性 = 新的值
# 查看属性 访问的是对象的所有属性
print(对象.__dict__)
# 访问对象的类信息
print(对象.__class__)
5、initメソッド
初期化メソッドと呼ばれているが、本質的機能であります
特長1:オブジェクトがインスタンス化されると、自動的にinitメソッド
特集2:自動的に最初の引数としてオブジェクト、パラメータビット自己の名は、自己が別の名前にすることができますが、それは変更に推奨されていません
機能:ユーザーがオブジェクトに初期値を割り当てます
演習:初期化メソッドによって彼にプロパティを設定するためにいくつかのプロパティを持つクラスを作成します。
class Dog:
def __init__(self,kind,color,age):
self.kind = kind
self.color = color
self.age = age
d1 = Dog("二哈","黑白",1)
d1 = Dog("泰迪","棕色",2)
注意:该函数不能有任何返回值/.... 只能是None 规定如此..
オブジェクト関数の本質は、処理されるので、彼の関数データと処理データの両方上のオブジェクトを取得するには、データを統合し、一緒にデータを処理することです
図6に示すように、結合されたメソッドオブジェクト
クラスメソッドは、デフォルトでメソッドのオブジェクトをバインドしています
それは特別なことです、
オブジェクトは、自動的に最初の引数として、オブジェクト自体に渡された関数を呼び出しますとき
彼を呼び出すために、クラス名は通常の関数である場合には、いくつかのパラメータは、いくつかのパラメータを渡すためにそこに持っています
演習:独自の名前情報をエクスポートできるようにするには挨拶のスキルと、学生のクラスを書きます
class Student:
def __init__(self,name):
self.name = name
def say_hi(self):
print("hello my name is %s" % self.name)
7、クラス結合方法
@classmethodを飾るために使用されるクラス結合方法
特別な機能は:かかわらず、クラスやオブジェクトの呼び出しの最初の引数として、自動的に入ってくるクラス自体です
オブジェクトにバインドする場合:機能ロジックが時間内にデータオブジェクトへのアクセスを必要とする場合
クラスにバインドする場合:データ・ロジック機能はときに、クラスにアクセスする必要がある場合
8、非結合アプローチ
または静的メソッドが呼び出され、それがされていることは、データアクセスクラスを必要としません。オブジェクトのデータにアクセスする必要はありません
構文:@staticmethod
ではない、一般的に