標籤:class 不能 def 多態 sel foo 析構 對象 類變數
特性
class
object
封裝
繼承
多態
文法
調用函數 --》 執行 --》返回結果
r1 = Role.__init__() return x342423
r1 = Role(r1,"A","Police","15000")
r1.name = "A"
r1.role = "Poice"
r1.money = 15000
r1.buy_gun() Role.buy_gun(r1)
屬性
方法
類變數的用途? 大家共用的屬性 ,節省開銷
class Person:
cn = "中國"
def __init__(self,name,age,addr,cn="china")
self.name = name
self.cn = cn
p1 = Person(name,age ,addr)
建構函式
解構函式: 在執行個體釋放、銷毀的時候自動執行的,通常用於做一些收尾工作, 如關閉一些資料庫連接,關閉開啟的臨時檔案
私人方法,私人屬性
類變數
執行個體變數
封裝
繼承
py2 經典類是按深度優先來繼承的,新式類是按廣度優先來繼承的
py3 經典類和新式類都是統一按廣度優先來繼承的
多態
一種介面,多種實現
類
屬性
執行個體變數
類變數
私人屬性__var
方法
構造方法,
解構函式
私人方法
對象:執行個體化一個類之後得到的對象
封裝
把一些功能的實現細節不對外暴露
繼承
繼承 ,組合
代碼的重用
單繼承
多繼承,
2.7 經典類,深度優先, 新式類,廣度優先
3.x 均是廣度優先
class Foo(object):
def __init__(self,name,age,sex,salary,course):
self.salary = salary
self.course = course
多態
介面重用, 一種介面,多種實現
靜態方法
只是名義上歸類管理, 實際上在靜態方法裡訪問不了類或執行個體中的任何屬性
類方法
只能訪問類變數,不能訪問執行個體變數
屬性方法
把一個方法變成一個靜態屬性
反射
hasattr(obj,name_str) , 判斷一個對象obj裡是否有對應的name_str字串的方法
getattr(obj,name_str), 根據字串去擷取obj對象裡的對應的方法的記憶體位址
setattr(obj,‘y‘,z), is equivalent to ``x.y = v‘‘
delattr
異常
try :
code
except (Error1,Erro2) as e:
print e
except Exception :抓住所有錯誤,不建議用
物件導向編程知識點