python-物件導向入門
一、物件導向介紹
介紹物件導向之前,先來回顧一下以前學的程式導向的程式設計思想
程式導向程式設計:
核心是過程二字,過程指的是解決問題的步驟,即先幹什麼,再幹什麼後幹什麼,基於該思想程式設計就好比是在設計一條流水線,是一種機械化的思維方式
優點:複雜的問題流程化,進而簡單化
缺點:可擴充套件性差
現在輪到物件導向的程式設計思想了!
物件導向程式設計,核心是物件二字,物件是特徵與技能的結合體,基於該思想編寫程式(腦子裡始終想的是物件二字),就好比創造一個世界,在上帝眼裡任何存在的事物都是物件,任何不存在的事物都可以造出來,是一種上帝式的思維方式
優點:可擴充套件性強
缺點:程式設計的複雜度要高於程式導向
二、類
物件是特徵與技能的結合體,而類則是一系列物件相同的特徵與技能的結合體
強調:
1.物件是具體存在的事物,而類則是一個抽象概念
2.站在不同的角度總結出的類與物件是不同的
在現實世界中,先有一個個具體存在的物件,然後隨著人類文明的發展才總結出類的概念
在程式中,先定義類,後呼叫類來產生物件
類體中最常見的就是變數和函式的定義,但類體中可以存在任意的python程式碼。
定義類:
class語句建立一個新的類的定義,後面跟著冒號“:”
class Student: #相同的特徵 school = `superschool` #相同的技能 def choose_course(self): print(`choosing course`)
類體程式碼會在類定義階段立即執行,會產生一個類名稱空間,用來將類體程式碼都丟進去。
檢視類的名稱空間:
print(Student.__dict__)
修改,新增,刪除
Student.school = `SUPPER` Student.country = `China`
del Student.country
總結類:
1.類本質上就是一個名稱空間,或者說是一個用來存放變數和函式的容器
2.類的用途之一就是當做名稱空間從其內部取出名字來使用
3.類的用途之二就是呼叫類來產生物件
物件:
呼叫類的過程稱之為類的例項化,呼叫類的返回值稱之為類的一個物件/例項
stu1 = Student()
為物件定製自己獨有的特性:
stu1.name=`李鐵蛋` stu1.age=18 stu1.sex=`male`
stu2.name=`趙鋼彈` stu2.age=38 stu2.sex=`female`
大家也注意到了,這裡存在了冗餘程式碼,我們來優化一下
def init(obj,name,age,sex): obj.name = name obj.age = age obj.sex = sex
產生的物件通過每次呼叫函式能夠更簡便,還有沒有更好的方法呢?答案肯定是有的
class Student: #相同的特徵 school = `oldboy` # stu1,`李鐵蛋`,18,`male` def __init__(obj, name, age, sex): obj.name = name #stu1.name=`李鐵蛋` obj.age = age #stu1.age=18 obj.sex = sex #stu1.sex=`male` #相同的技能 def choose_course(self): print(`choosing course`)
呼叫類會先產生一個空物件stul,然後返回,觸發類中的__init__的執行,將物件連同呼叫類括號裡指定的引數一同傳入
stu1=Student(`李鐵蛋`,18,`male`) #__init__(stu1,`李鐵蛋`,18,`male`) stu2=Student(`趙鋼彈`,38,`female`) #__init__(stu2,`趙彈`,38,`female`)
總結__init__的功能:是在例項化時就為物件初始自己獨有的屬性,要注意的是不能有返回值,預設返回None
屬性查詢:
1.先從物件自己的名稱空間中找,沒有則去所屬的類中找
2.類中定義的變數是所有物件共享的,物件可以用來用,類也可以來使用,類一旦改變自己的資料屬性的值,所有物件都能感知到。
繫結方法:
類中定義的函式是是類的函式屬性,類可以用,類呼叫就是一個普通函式,但其實類中定義的函式是給物件用的,而且是繫結給物件用的
1.類的函式:該傳幾個引數就傳幾個
2.繫結方法,指向類的函式:特殊之處是繫結給誰就由誰來呼叫,誰來呼叫就會當做第一個引數自動傳入。
三、一切皆物件
在python3中統一了類與型別的概念
class Foo: pass print(Foo) obj=Foo() print(type(obj)) print(int) age=10 #age=int(10) print(type(age)) l1=[1,2,3] #l1=list([1,2,3]) # print(type(l1)) # l1.append(4) # print(l1) l1.append(4) # list.append(l1,4) print(l1)
l1.append就相當於呼叫了list類中的append函式
物件導向後期繼續補充,七夕剛好new個物件!
焚膏油以繼晷,恆兀兀以窮年。
相關文章
- python-程式導向、物件導向、類Python物件
- JavaScript物件導向入門JavaScript物件
- Java入門教程八(物件導向)Java物件
- 從入門到入獄------物件導向(二)物件
- 【3】python入門-物件導向-2Python物件
- 物件導向程式設計入門 - Janos Pasztor物件程式設計
- Go 語言極速入門4 - 物件導向Go物件
- 物件導向-物件導向思想物件
- 全網最適合入門的物件導向程式設計教程:00 物件導向設計方法導論物件程式設計
- JS基礎入門篇(三十六)—物件導向( 三 )JS物件
- python-物件導向(繫結方法與非繫結方法)Python物件
- 物件導向-由淺入深物件
- Python基礎入門(6)- 物件導向程式設計Python物件程式設計
- C#快速入門教程(1)——物件導向程式設計C#物件程式設計
- javascript快速入門12--函式式與物件導向JavaScript函式物件
- 物件導向JavaScript入門——來自Mozilla的官網教程物件JavaScript
- 程式導向與物件導向物件
- 物件導向與程式導向物件
- “程序導向”和“物件導向”物件
- 物件導向物件
- 全網最適合入門的物件導向程式設計教程:01 物件導向程式設計的基本概念物件程式設計
- 物件導向,搞定物件物件
- PHP 物件導向 (九)物件導向三大特徵PHP物件特徵
- JAVA物件導向基礎--物件導向介紹Java物件
- python物件導向入門(1):從程式碼複用開始Python物件
- 從程式導向到物件導向物件
- 物件導向(下)物件
- 物件導向 -- 反射物件反射
- PHP物件導向PHP物件
- Java — 物件導向Java物件
- JavaScript 物件導向JavaScript物件
- JS物件導向JS物件
- 物件導向(上)物件
- scala物件導向物件
- 物件導向--下物件
- 物件導向(oop)物件OOP
- 物件導向trick物件
- 物件導向-介面物件