1.面向過程和物件導向
class 類名():
類體(屬性和方法)
2.建立物件
引用(變數) = 類名()
init(self) 建構函式
3.方法:類方法 物件方法
4.物件導向的三大特性:繼承 封裝 多型
class 子類/派生類(父類/超類/基類):
class a(object):
def a():
pass
pass
class b(a):
pass
class c(b):
pass
class d(a,b,c):
從左到右,整體深度優先,區域性廣度優先(有菱形結構)
覆蓋/重寫
多型:多種形態 : 繼承-重寫(繼承中的重寫)
類與類之間的關係 :繼承 關聯(組合,聚合) 依賴
關聯:乙個類的物件作為另乙個類的屬性
依賴:乙個類的物件作為另乙個類的方法引數
耦合程度:繼承》關聯》依賴
封裝關聯關係優點:
**復用/減少**冗餘
關聯:
class student():
def __init__(self,name):
self.name = name
def study(self):
print("我愛python")
class teacher():
def __init__(self,stu):
self.stu =stu
def teach(self):
print("教%spython"%self.stu.name)
s = student("張三")
t = teacher(s)
t.teach()
依賴
class student():
def __init__(self,name):
self.name = name
def study(self):
print("我愛python")
class teacher():
def teach(self,stu):
print("教%spython"%stu.name)
s = student("張三")
t = teacher()
t.teach(s)
class a():
name = "張三" #類屬性
def __init__(self,age):
self.age=age #物件屬性
@staticmethod
def a():
print("類方法-靜態方法")
def aa(self):
print("物件方法")
print(a.name)
a.a()
a = a(18)
print(a.age)
a.aa()
封裝:
用 __(兩個下劃線來私有化屬性或者方法)
要想讓使用者獲得被私有化的屬性或是方法,可以使用get,set方法
class a():
__name = "張三" #類屬性 實際是這個形式:_a__name
def __init__(self,age): #self._a__age
self.__age=age #物件屬性
@staticmethod
def __a(): #_a__a()
print("類方法-靜態方法")
def __aa(self): #_a__aa()
print("物件方法")
def get_age(self):
return self.__age
def set_age(self,age):
if age>150 or age<0:
print("非法年齡")
else:
self.__age = age
@staticmethod
def get_name():
return a.__name
@staticmethod
def set_name(name):
if isinstance(name, str):
a.__name = name
else:
raise typeerror("型別錯誤,非str型別不能賦值")
a.set_name("李四")
print(a.get_name())
python 類 封裝 繼承 多型
類由一系列函式物件組成,在類中,函式物件稱為方法,方法的第乙個引數必須為self,表示當前例項物件 可把類理解為乙個dict,key為方法名 string型別 value為方法 class animal object def init self,age,color self.age age self...
Python 封裝 繼承 多型 重寫
一 封裝 1 定義 根據職責將屬性和方法封裝到乙個抽象的類中。就是只能在類的內部訪問,外部訪問屬性或方法會報異常。2 實現 python中封裝很簡單,在屬性或者方法名稱前邊加上兩個下劃線就好。二 繼承 1 定義 指提供了同一類物件共性的處理方法,子類繼承父類共性的東西。有利於 的復用性。三 多型 1...
封裝,繼承,多型
一 1 封裝 該隱藏隱藏,該公開的公開 屬性隱藏,同時提供get set方法 有些方法應該隱藏 方法宣告公開,實現隱藏。實現的改變對架構的影響最小 2 繼承 一般 特殊 單繼承 乙個類最多只能有乙個直接父類。類之間可以形成樹狀關係 根據訪問許可權,子類如果可以訪問父類的屬性和方法,就能繼承 priv...