物件導向
面向過程:側重於怎麼做
物件導向:側重於誰來做
1.確定職責–要做的事情(方法)
2.物件內部封裝不同方法(多個)
3.不同物件呼叫不同方法
類:相當於模板,所有的物件都是根據這個模板建立出來的
類只需要有乙個,物件可以有多個
類:屬性(資訊)和方法(你能幹什麼)
物件:self,那乙個物件呼叫的方法,就是對那個物件的呼叫
1.類名
2.屬性
3.方法
1.如何定義類
2.建立物件的過程稱為例項化,把抽象的物件具體化
#類 模板
class dog()
##屬性:類中變數
name = 『tom』
age=3
def eat(self):
print(『小狗吃了』)
def sleep(self):
print(『小狗睡了』)
##例項化:通過類建立物件
dog1=dog()
dog2=dog()
dog1.eat()
dog1.sleep()
類和屬性
class people():
#構造方法
definit(self):
print(『self』,self)
p1 = people()
print(『p1』,p1)
封裝
物件導向程式設計的三大特性:封裝性,多型性,繼承性
#封裝就是將同一型別的東西放在一起,通過self.***去呼叫
class people():
def __init__(self,name,age):
#類的self實質就是物件本身
#self是物件,name是屬性,self.name就是將物件和屬性封裝在一起
self.name = name
self.age = age
def run(self):
print('%s正在跑步' %(self.name))
p1=people(『阿呆』,3)
p1.run()
p2=people(『哥哥』,5)
p2.run()
繼承
定義乙個類,可以從現有的某個類繼承
新的類稱為子類,擴充套件類(subclass),被繼承的稱為父類,基類,超類(baseclass,superclass)
##如何實現繼承
##繼承的工作機制是什麼
class father():
definit(self,name,age):
#構造方法在例項化物件時自動實現
self.name = name
self.age = age
def eat(self):
print('%s正在吃' %(self.name))
def sleep(self):
print( '%s正在睡' %(self.name))
class son(father):
def eat(self):
father.eat(self)
print((self.son).eat)
print('%s倒立吃飯' %(self.name))
#pass
father = father(『老李李』,65)
son =(『老李』,38)
#son.eat()
##例項化物件預設執行構造方法,子類沒有的方法會繼承父類
##呼叫父類方法
son.eat()
##繼承擁有傳遞性,子類可以繼承父類的屬性和方法
class animal():
def eat(self):
print('eat')
def drink(self):
print('drink')
def sleep():
print('sleep')
class cat(animal):
def yell(self):
print('喵')
class jiqimao(cat):
def speak(self):
print('i can speak')
jim = jiqimao()
jqm.speak()
jqm.sleep()
class a():
def test(self):
print('a --- test 方法')
def demo(self):
print('b---demo方法')
class b():
def test(self):
print('a --- test 方法')
def demo(self):
print('b---demo方法')
class c():
def test(self):
print('a --- test 方法')
def demo(self):
print('b---demo方法')
c= c()
c.test()
c.demo1()
str方法
返回值必須為字串
class people():
def __init__(self,name):
self.name = name
def __str__(self):
##必須返回乙個字串
return '我是%s' %(self.name)
p1 = people(『老李』)
print(p1)
class jiaju():
def __init__(self,name,area):
self.name = name
self.area = area
def __str__(self):
return '我是%s,area is %.2f ping mi' %(self.name,self.area)
class house():
def __init__(self,type,area):
self.type = type
self.area = area
self.free_area = area
self.item_list =
def __str__(self):
return('house type: %s \n area:%.2f[shengyu: %.2f] \n jiaju:%s ') %(self.type,self.area,self.free_area,self.item_list)
def add_item(self,item):
if item.area > self.free_area:
print('%s area is too big,can not input' %item.name)
return false
self.free_area -= item.area
bed = jiaju('bed',4)
chest = jiaju('chest',2)
table = jiaju('table',1.5)
myhouse = house('er shou fang',2)
myhouse.add_item(bed)
myhouse.add_item(table)
print(myhouse)
多型性
開源(對擴充套件開放):允許子類方法重寫
閉源(對修改封閉):不修改,直接繼承父類方法
class student():
def get_score(self):
print(『獲取學生成績』)
class chinese():
def get_score(self)
print(『獲取語文成績』)
def math():
def get_score(self):
print(『獲取數學成績』)
student1 =student()
student 2 =chinese()
student3 = math()
student1.get_score()
student2.get_score()
student3.get_score()
Python物件導向 例項屬性和類屬性
由於python是動態語言,根據類建立例項可以任意繫結屬性。給例項繫結屬性的方法是通過例項變數,或者通過self變數 class student object def init self,name self.name name s student jeff print s.name jeff當我們定...
物件導向(三) 例項屬性與類屬性
例項屬性和類屬性 1 概念 2 區別 1 概念上 2 宣告位置 3 訪問方式 4 修改形式 定義學生類,屬性 name,age,gender class student gender 男 類屬性 公共資源 def init self,name,age self.name name self.age ...
Python物件導向之類屬性類方法靜態方法
使用物件導向開發時,第一步是設計類 當使用 類名 建立物件時,會自動執行以下操作 1.為物件在記憶體中分配空間 建立物件 2.為物件的屬性 設定初始值 初始化方法 init 物件建立後,記憶體中就有了乙個物件的實實在在的存在 例項 因此通常也會把 1.建立出來的物件叫做類的例項 2.建立物件的動作叫...