編程思想:
面向過程編程:c (只有邏輯和過程)
a = 1
b = 2
print(a+b)
面向?qū)ο缶幊蹋簀ava、c++、oc、python等(有類語法)-->(以對象為工具實現(xiàn)功能)
對象.sum(1,2)
函數(shù)式編程:c、java、python (以函數(shù)為工具實現(xiàn)功能)
def sum(num1, num2):
return num1+num2
sum(1,2)
- 類:具有相同屬性和相同功能的對象的集合。是抽象的
- 對象:就是類的實例,是具體的
聲明類的格式:
class 類名:
類的內(nèi)容
class: python中聲明類的關(guān)鍵字
類名: 標(biāo)識符,1.首字母大寫!?。?! 2.見名知義
冒號: 固定格式,冒號后一個縮進(jìn)的內(nèi)容,就是類的內(nèi)容
類的內(nèi)容:1.類變量 2.對象屬性 3.方法(構(gòu)造方法,對象方法、類方法、靜態(tài)方法)
1.類變量: 聲明在類中,方法外的變量;要通過類去獲?。ㄍㄟ^類能夠讓其具體的屬性)
方法: 聲明在類中的函數(shù)就叫方法
聲明一個人對應(yīng)的類
class Person:
count就是類變量(通過類去使用)
count = 61 # 局部變量,作用域是整個類
構(gòu)造方法__init __,名字固定;
通過類創(chuàng)建對象的時候,系統(tǒng)會自動的調(diào)用這個方法去初始化對象的屬性
self:
1.類中所有的對象方法都會默認(rèn)有一個self參數(shù),
用來指向調(diào)用方法的對象(誰調(diào)用當(dāng)前這個方法就指向誰)
2.調(diào)用帶有self的方法,不需要給self傳參,系統(tǒng)會自動將方法調(diào)用者傳給它
def __init__(self, name1=''):
# 我們一般在這個地方去聲明對象的屬性
# name、age、gender就是人這個類的對象的屬性
self.name = name1
self.age = 0
self.gender = '女'
對象方法:1.所有的對象方法都有一個默認(rèn)的參數(shù)self
2.直接聲明在類中的函數(shù),都是對象方法
3.對象方法必須使用對象去調(diào)用
def run(self):
print('跑起來')
- 1.使用類變量:通過 類名.類變量 的形式在類外去使用類變量
print(Person.count) - 2.name、age、gender都是對象屬性,對象屬性的使用: 對象.屬性名
- 3.對象方法run: 對象方法只能通過對象去調(diào)用--> 對象.方法名(實參列表)
run() #NameError: name 'run' is not defined
Person.run()
4.怎么聲明對象:類名(參數(shù))
通過創(chuàng)建對象:會自動調(diào)用類的init方法去初始化對象的屬性
類名(參數(shù)),這個參數(shù)有沒有,有幾個就看init方法
p1 = Person('xiaoming')
通過person類,創(chuàng)建了一個對象p1
創(chuàng)建完對象后,就可以通過對象獲取對象屬性:對象.屬性名
print(p1.name)
通過對象給屬性賦值
p1.age = 10
print(p1.age)
通過對象去調(diào)用對象方法(也叫給對象發(fā)送消息)
p1.run()
5.一個類可以擁有多個對象
P2 = Person
p2.name ='lLuoHao'
p2.age = 34
p2.gender ='男‘
p2.run()