1.什么是類、什么是對象
"""
- 官方定義
類就是擁有相同功能和擁有相同屬性的對象的集合 - 抽象
對象就是類的實例 - 具體 - 生活角度看類和對象
"""
2.類的聲明
"""
1)語法
class 類名:
類的內(nèi)容(屬性和功能)
2)說明
class - 聲明類的關(guān)鍵字
類名 - 要求為標(biāo)識符
見名知義,首字母大寫,駝峰式命名
類的內(nèi)容 - 主要包含說明文檔,屬性(普通的變量),功能(函數(shù)/方法)
"""
3.對象怎么聲明
"""
對象 = 類() - 創(chuàng)建指定的類對應(yīng)的對象
"""
4.類中的方法
"""
- 什么是方法:聲明在類中的函數(shù)叫方法
- 類中的方法有三種:對象方法,類方法,靜態(tài)方法
a.對象方法:直接聲明在類中的函數(shù)
有默認(rèn)參數(shù)self,通過對象調(diào)用的時候這個參數(shù)不用傳參,因為系統(tǒng)會
(self,當(dāng)前對象 -- 誰調(diào)用self就指向誰,當(dāng)前對象能做的
通過類的對象來調(diào)用 對象.對象方法()
b.類方法:在聲明函數(shù)前加上@classmethod
有默認(rèn)參數(shù)cls,通過類調(diào)用的時候這個參數(shù)不用傳參,因為系統(tǒng)會自動將當(dāng)
(self,當(dāng)前類 -- 誰調(diào)用cls就指向誰,當(dāng)前類能做的事情cls
通過類來調(diào)用:類.類方法()
c.靜態(tài)方法:在聲明函數(shù)前@staticmethod
沒有默認(rèn)參數(shù)
通過類來調(diào)用:類.靜態(tài)方法()
"""
class Person:
"""人類"""
@staticmethod
def eat(food):
print("人吃%s" % food)
常識:
1.什么是init方法
init是類默認(rèn)繼承的一個魔法方法,用來初始化類:本質(zhì)是對象方法,但是不需要程序員自己調(diào)用,會被自動調(diào)用
通過類創(chuàng)建對象的時候(通過構(gòu)造方法創(chuàng)建對象),系統(tǒng)會自動調(diào)用類中的init方法,并且構(gòu)造方法中的實參全部傳給init方法
創(chuàng)建對象的時候需不需要參數(shù),需要幾個參數(shù),看這個類的init方法
聲明累的時候,系統(tǒng)會自動給我們創(chuàng)建一個函數(shù),這個函數(shù)名和聲明的類的類名意義
函數(shù)會先在內(nèi)存中開辟空間創(chuàng)建對象,然后用創(chuàng)建的對象去調(diào)用類的init方法,最后才將對象返回
class Person:
def __init__(self):
pass
1.屬性
類中的屬性分為:對象屬性和字段
"""
- 字段 - 聲明在類中的字段
通過 類.字段 的方式來使用
不會因為對象的不同而不一樣的屬性,這種屬性可以聲明稱類的字段最近更新 - 對象屬性: 聲明在init方法中,以self.屬性 = 值 的形式聲明
對象屬性通過'對象.屬性'的方式來使用
"""
聲明類的時候方法的選擇
"""
1.對象方法:當(dāng)實現(xiàn)函數(shù)的功能需要用到對象屬性時,使用對象方法
2.類方法:實現(xiàn)函數(shù)的功能不需要對象屬性,并且需要類相關(guān)操作就使用類方法
3.靜態(tài)方法:實現(xiàn)函數(shù)的功能不需要對象屬性也不需要類相關(guān)操作,就使用靜態(tài)方法
"""
class Dog:
""" 狗 """
# ===========字段=============
numbers = 10
@staticmethod
def im():
print('222')
# ===========對象屬性===========
def __init__(self):
self.color = '白色'
self.gender = '公狗'
self.age = 4
練習(xí):聲明一個學(xué)生類,擁有屬性:名字\電話\年齡\學(xué)號 擁有功能:學(xué)習(xí)(打印XX在學(xué)XXX)\
class Students:
def __init__(self, name, telephone='', age=0):
self.name = name
self.telephone = telephone
self.age = age
self.student_number = '0000'
def learn(self, subject):
print('%s在學(xué)%s' % (self, subject))
# 寫一個矩形類,有屬性: 長和寬 方法:求面積,求周長
class Rectangle:
def __init__(self, length=0, width=0):
self.length = length
self.width = width
def area(self):
return self.length * self.width
def perimeter(self):
return 2 * (self.width + self.length)
python中的對象屬性支持增,刪,改,查
1.查
"""
a.對象.屬性 - 獲取指定屬性對應(yīng)的值,如果屬性不存在會報錯
b.getattr(對象,屬性名,默認(rèn)值) - 獲取指定屬性對應(yīng)的值,
屬性不存在返回默認(rèn)值,無默認(rèn)值時報錯
"""
2.增\改
"""
a.對象.屬性 = 值 - 當(dāng)屬性不存在就添加屬性,當(dāng)屬性存在修改屬性的值
b.setattr(對象,屬性名,值) - 當(dāng)屬性不存在就添加屬性,當(dāng)屬性存在修改屬性的值
"""
3.刪
"""
del 對象.屬性
delattr(對象,屬性名) - 刪除指定對象對應(yīng)的屬性
"""