面向對象編程:簡稱OOP。java
是一種程序設計思想。oop把對象做爲程序的基本單元,一個對象包含了數據和操做數據的函數。python
在python中,全部數據類型均可以視爲對象,也能夠自定義對象。自定義的對象數據類型就是面向對象的類class的概念。c++
注意:屬於面向對象編程語言的有 c++ 、 ruby 、 python 、 java編程
不支持面向對象的語言有 c語言ruby
類和實例:dom
類:是抽象的模板;一類具備相同特徵的事物的統稱。編程語言
類裏面有:①靜態---屬性(特徵) ---變量 ②動態---方法(行爲)----函數函數
定義類:經過class關鍵字,類型一般都是大寫開頭的oop
object ----- 表示該類是從哪一個類繼承下來的設計
一般若是沒有合適的繼承類,就使用object類,這是全部類都會繼承的類
class Student(object):
pass
實例:根據類建立出來的一個個具體的'對象',每一個對象都擁有相同的方法,單各自的數據可能不一樣。
類是實例的抽象化概念;實例是類的具體實例化體現。
建立實例:經過類名+()實現的 如 bar = Student()
也能夠自由的給實例變量綁定屬性 如 bar.name = Student()
因爲類能夠起到模板做用,所以,能夠在建立實例時,把一些咱們認爲綁定的屬性強制填寫進去。經過一個特殊的_int_方法,在建立時,就把name、score等屬性綁上去。
有了_int_方法,在建立實例時,就不能傳入空的參數了,必須傳入_int_方法匹配的參數,但self不須要傳,python解釋器會自已把實例變量傳進去。
def Student(object):
def _int_(self,name,score):
self.name = name
self.score = score
實例化操做:1 - 類裏面的變量 --- 屬性
2 - 類裏面的函數 --- 方法
3 - 建立實例 t1 = Tiger()
靜態屬性和實例屬性:
1- 靜態屬性 ----- 也叫類屬性 屬於整個類的
用法 ---- ①類.屬性 ②實例.屬性
2 - 實例屬性 ----- 定義在初始化方法 _init__裏面
通常在建立實例時就給定
只要建立實例 --- def _init(self): 初始化方法確定會調用
self 只是表明詞,並非關鍵字--能夠替換,但不建議替換! 不能缺省
id(self)
實例化屬性 --- 只能 實例.屬性
self 這個實例的自己
靜態方法和實例方法:
1 - 靜態方法 ----- 屬於整個類 類能夠直接調用,不須要實例化 ---- 類.方法 / 實例.方法
用@stacticmethod修飾 只能修飾緊跟的那一個
2 - 實例方法 ----- 有self ---- 用法 實例.方法
取隨機數: from random import randint
print(randint(0,5)) ----- 取 0 1 2 3 4 5 閉區間 隨機
時間處理: import time
print(time.time()) ---- 單位是s秒 從1970算起
繼承:1 - 繼承關係能夠是多個父類
2 - 重寫 -- 在父類跟子類之間的一個多態的體現
3 - 在重寫狀況下,調用父類的方法
super(SouTiger,s1).roar()
super(子類類名,子類的實例名).roar()
4 - __name 屬於私有屬性
類的專有方法有:
① __int__ 構造函數 在生成對象時調用
② __del__ 析構函數 釋放對象時使用
③ __repr__ 打印 轉換
④ __add__ 加運算
⑤ __sub__ 減運算
⑥ __call__ 函數調用
⑦ __len__ 得到長度
⑧ __mul__ 乘運算
⑨ __mod__ 求餘計算
⑩ __pow__ 乘法