1 迭代器和生成器
迭代器 獲取數(shù)據(jù):next (迭代器)趴腋、for 循環(huán)遍歷 彤断,數(shù)據(jù)來源:轉(zhuǎn)換玫坛、生成器
生成器:就是迭代器
三目運(yùn)算符: 值1
2 模塊
模塊就是py文件
包/ 庫 就是文件夾
3 異常處理
"""
try:
需要捕獲異常的代碼段
except:
出現(xiàn)異常后的異常處理
finally:
不管try里面的代碼是否異常,異常是否會(huì)被捕獲都會(huì)執(zhí)行的代碼
"""
"""--auhtor--==yanghao"""
什么是類
"""
類的定義:
類就是擁有相同功能和相同的屬性的對(duì)象的集合 --抽象的
對(duì)象就是類的實(shí)例 --具體的
生活角度看類和對(duì)象
如果人是類授嘀,具體某個(gè)人就是對(duì)象
"""
2. 類的聲明
"""
語法
class 類型:
類的內(nèi)容
說明:
class --聲明類的關(guān)鍵字
類名 --標(biāo)識(shí)符憨琳,不能是關(guān)鍵字
見名知義诫钓,采用駝峰是命名(采用通過單詞首字母大寫的方式來區(qū)分不同的單詞),首字母大寫
: -- 固定寫法
類的內(nèi)容 --主要包含:類的說明文檔篙螟,屬性菌湃,功能
"""
3 對(duì)象的聲明
"""
對(duì)象 = 類() --創(chuàng)建指定的類的對(duì)應(yīng)的對(duì)象
"""
4 類中的方法
"""
1什么是方法:聲明在類中的函數(shù)就叫方法
2類中的方法有三種:對(duì)象方法、類方法遍略、靜態(tài)方法
a 對(duì)象方法:直接聲明在類中的函數(shù)
有默認(rèn)參數(shù)self,通過對(duì)象調(diào)用的時(shí)候這個(gè)參數(shù)不用傳參惧所,因?yàn)橄到y(tǒng)會(huì)自動(dòng)傳參給self
(self,當(dāng)前對(duì)象--誰調(diào)用self就指向誰绪杏,當(dāng)前類的對(duì)象能做的事情下愈,self都能做)
通過類的對(duì)象來調(diào)用.對(duì)象。對(duì)象方法()
b 類方法: 聲明函數(shù)前加@classmethod
有默認(rèn)參數(shù)cls蕾久,通過類調(diào)用的時(shí)候這個(gè)參數(shù)不用傳參势似,因?yàn)橄到y(tǒng)會(huì)自動(dòng)將當(dāng)前類傳遞給cls
(cls,當(dāng)前類-誰調(diào)用就指向誰僧著,當(dāng)前類能做的事情cls都能做)
通過類來調(diào)用: 類履因。類方法()
c 靜態(tài)方法:聲明函數(shù)前加@staticmethod
沒有默認(rèn)參數(shù)
通過類來調(diào)用:類。靜態(tài)方法()
"""
class Person:
"""
人類
"""
def eat(self,food):
print('人吃'+food)
self.study()
def study(self):
print('學(xué)習(xí)')
# ========類方法========================
@classmethod
def destroy(cls):
tp = cls()
print('tp',tp)
print('人類破壞環(huán)境')
@staticmethod
def beat_animal():
print('人類毆打小動(dòng)物')
p1 = Person()
print(p1,id(p1))
p2 = Person()
p1.eat('noodle')
p2.eat('spot')
類調(diào)用方法
Person.destroy()
調(diào)用靜態(tài)方法
Person.beat_animal()
"""--auhtor--==yanghao"""
什么是init 方法
init 是類中默認(rèn)的繼承的一個(gè)魔法方法盹愚,用來初始化類:本質(zhì)是對(duì)象方法栅迄,但是不需要通過對(duì)象直接來調(diào)用
通過類創(chuàng)建對(duì)象的時(shí)候,系統(tǒng)會(huì)自動(dòng)調(diào)用類中的init方法
聲明類的時(shí)候系統(tǒng)會(huì)自動(dòng)給我們創(chuàng)建一個(gè)函數(shù)杯拐,這個(gè)函數(shù)的函數(shù)名和聲明的類的類名一樣
函數(shù)中會(huì)先在內(nèi)存中開辟空間創(chuàng)建對(duì)象霞篡,然后用創(chuàng)建的對(duì)象去調(diào)用類的init方法世蔗,最后才將對(duì)象返回
創(chuàng)建對(duì)象的時(shí)候需不需要參數(shù),需要幾個(gè)參數(shù)朗兵,看這個(gè)類的int方法
class Person():
def init(self,name):
print(self,name)
print('init方法')
print('============')
p1 = Person('yh')
print(p1) #
print('---------------')
"""--auhtor--==yanghao"""
屬性
類中的屬性分為:對(duì)象屬性和字段
"""
1 字段 - 直接聲明在類中的變量就是字段,字段要通過'’類污淋。字典’的方式來使用;
當(dāng)類中屬性的值不會(huì)應(yīng)為對(duì)象不同而不同余掖,這種屬性就可以聲明稱類的字段
2 對(duì)象屬性: 在init方法總寸爆,以 self。屬性= 值 得形式聲明盐欺;
對(duì)象屬性通過‘對(duì)象赁豆。屬性’的方式來使用
當(dāng)屬性的值會(huì)因?yàn)閷?duì)象的不同而不同的時(shí)候,使用對(duì)象屬性
"""
class Dog:
"""狗"""
# ====字段====
number = 10
#================對(duì)象屬性==========
def init(self,name='x',color='黃色',gender='公',age='1'):
self.name = name
self.color = color
self.gender = gender
self.age = age
使用類的字段
Dog.number = 100
print(Dog.number)
使用對(duì)象屬性
dog1 =Dog()
print(dog1.gender)
print(dog1.color)
print(dog1.age)
dog2 =Dog('財(cái)財(cái)',color ='灰色')
print(dog2.name)
print(dog2.gender)
print(dog2.color)
print(dog2.age)
練習(xí):聲明一個(gè)學(xué)生類冗美,擁有屬性:名字魔种、電話、年齡粉洼、學(xué)號(hào) 擁有功能:學(xué)習(xí)(打印xxx在學(xué)xxx)节预、
class Student:
def init(self,name,tel,age,num):
self.name = name
self.tel = tel
self.age =age
self.num = num
def study(self,subject):
print(self.name + '學(xué)習(xí)'+subject)
stu1 = Student('楊浩',123,15,123)
stu1.study('python')
stu2 = Student('楊1浩',123,15,123)
stu2.study('h5')
寫一個(gè)舉行類,有屬性:長(zhǎng)和寬 方法:求面積属韧、求周長(zhǎng)
class Rectangle:
def init(self,length,width):
self.length =length
self.width = width
def area(self):
return self.length*self.width
def perimeter(self):
return (self.length+self.width)*2
r1 = Rectangle(10,20)
print(r1.area())
聲明類的時(shí)候方法的選擇
"""
1 對(duì)象方法:實(shí)現(xiàn)函數(shù)的功能需要對(duì)象屬性的時(shí)候安拟,就使用對(duì)象方法
2 類方法:實(shí)現(xiàn)函數(shù)的功能不需要對(duì)象屬性,但是需要類的字段就使用類的方法
3 靜態(tài)方法:實(shí)現(xiàn)函數(shù)的功能既不需要對(duì)象屬性也不需要類相關(guān)的操作宵喂,就使用靜態(tài)的方法
"""
"""--auhtor--==yanghao"""
python中的對(duì)象屬性糠赦,支持增、刪锅棕、改拙泽、查
class Dog:
def init(self,name):
self.name = name
self.age = 0
dog1 = Dog('大黃')
dog2 = Dog('小黃')
"""
a.對(duì)象。屬性 -- 獲取指定屬性對(duì)應(yīng)的值裸燎,如果屬性不存在會(huì)報(bào)錯(cuò)
b getattr(對(duì)象奔滑,屬性名,默認(rèn)值) --獲取指定屬性對(duì)應(yīng)的值顺少,
當(dāng)屬性不存在的時(shí)候朋其,有默認(rèn)值的時(shí)候返回默認(rèn)值,沒有默認(rèn)值會(huì)報(bào)錯(cuò)
"""
print(dog1.name)
print(dog2.name)
print(getattr(dog1,'name2','無名狗'))
2 增脆炎、改
"""
a . 對(duì)象.屬性 =值 --當(dāng)屬性不存在的時(shí)候是添加屬性梅猿,當(dāng)屬性存在的時(shí)候是修改屬性的值
b setattr(對(duì)象,屬性名秒裕,值) --當(dāng)屬性不存在就添加屬性袱蚓,當(dāng)屬性存在就修改屬性的值
"""
dog1.gender = 10
print(dog1.gender)
dog1.name = '貝貝'
print(dog1.name)
a_name= 'color'
setattr(dog1,a_name,'白色')
print(dog1.color)
setattr(dog1,'name','小貝')
print(dog1.name)
3 刪
"""
a del 對(duì)象.屬性
b delattr(對(duì)象.屬性名)
"""
del dog1.name
print(dog1.name
delattr(dog1,'age')
print(dog1.name)
注意:對(duì)象屬性的增刪改查只針對(duì)單個(gè)對(duì)象
print()