1.1 空類
python類主體沒有任何內(nèi)容,只有pass語句,稱為空類。
1.2 obj.attr屬性賦值
通過obj.attr=value進(jìn)行類和實(shí)例屬性賦值。
| NO | 場景 | 描述 |
|---|---|---|
| 1 | 類添加屬性 | (1) 類添加屬性,用于記錄數(shù)據(jù)。(2) 實(shí)例沒屬性,實(shí)例取類屬性。 |
| 2 | 實(shí)例修改屬性 | (1) 實(shí)例修改類不可變屬性,相互間不影響。(2) 實(shí)例修改類可變屬性,指向同一值,相互影響。 |
| 3 | 實(shí)例新增屬性 | (1) 實(shí)例新增屬性,只屬于本實(shí)例。(2) 實(shí)例新增屬性,用于記錄數(shù)據(jù),一個(gè)實(shí)例相當(dāng)于一條記錄。 |
綜上,
類添加屬性,用于各個(gè)實(shí)例共享,通常添加實(shí)例共有屬性,非個(gè)性化屬性。
實(shí)例添加屬性,用于記錄不同屬性。
文件
E:\\documents\\F盤\\testclass.py
class Record:pass
if __name__ == '__main__':
# 添加類屬性(數(shù)據(jù)屬性)
Record.name = '梯閱線條'
Record.age = '18'
print('Record.姓名:{},年齡:{}'.format(Record.name,Record.age))
# 實(shí)例共享類屬性
r1 = Record()
r2 = Record()
print('r1.姓名:{},年齡:{}'.format(r1.name,r1.age))
print('r2.姓名:{},年齡:{}'.format(r2.name,r2.age))
# 修改實(shí)例屬性,只影響實(shí)例本身,根據(jù)屬性搜索樹優(yōu)先讀取實(shí)例屬性
r1.name = 'r1.name'
r1.age = 'r1.age'
r2.name = 'r2.name'
r2.age = 'r2.age'
print('Record.姓名:{},年齡:{}'.format(Record.name,Record.age))
print('r1.姓名:{},年齡:{}'.format(r1.name,r1.age))
print('r2.姓名:{},年齡:{}'.format(r2.name,r2.age))
# 實(shí)例新增屬性只屬于當(dāng)前實(shí)例
r1.sex = '男'
r2.sex = '女'
try:
print('Record.姓名:{},年齡:{},性別:{}'.format(Record.name,Record.age,Record.sex))
except Exception as e:
print('Record.姓名:Record.name,年齡:Record.age,性別:Record.sex.=>{}'.format(e))
print('r1.姓名:{},年齡:{},性別:{}'.format(r1.name,r1.age,r1.sex))
print('r2.姓名:{},年齡:{},性別:{}'.format(r2.name,r2.age,r2.sex))
示例
# 打開cmd,執(zhí)行下面示例
E:\\documents\\F盤>python testclass.py
Record.姓名:梯閱線條,年齡:18
r1.姓名:梯閱線條,年齡:18
r2.姓名:梯閱線條,年齡:18
Record.姓名:梯閱線條,年齡:18
r1.姓名:r1.name,年齡:r1.age
r2.姓名:r2.name,年齡:r2.age
Record.姓名:Record.name,年齡:Record.age,性別:Record.sex.=>type object 'Record' has no attribute 'sex'
r1.姓名:r1.name,年齡:r1.age,性別:男
r2.姓名:r2.name,年齡:r2.age,性別:女
1.3 類屬性-dict,class,bases
| NO | 屬性 | 描述 |
|---|---|---|
| 1 | **dict ** | 類和實(shí)例的屬性字典。 實(shí)例無本身屬性則為空。 |
| 2 | **class ** | 查看實(shí)例所屬類。 |
| 3 | **bases ** | 查看指定類名的直接超類元組。 實(shí)例對(duì)象沒有bases屬性。 |
文件
E:\\documents\\F盤\\testclass.py
class Record:pass
class MyRecordA(Record):
pass
class MyRecordB(MyRecordA):
pass
class MyRecordC(MyRecordB,MyRecordA):
pass
if __name__ == '__main__':
Record.name = '梯閱線條'
Record.age = '18'
r1 = Record()
r2 = Record()
r1.name = 'r1.name'
r1.age = 'r1.age'
r1.sex = 'r1.sex'
# __dict__ 屬性字典
print('Record.__dict__.keys()={}'.format(list(Record.__dict__.keys())))
# r1賦值實(shí)例,屬性字典非空
print('r1.__dict__.keys()={}'.format(list(r1.__dict__.keys())))
# r2 空實(shí)例,屬性字典為空
print('r2.__dict__.keys()={}'.format(list(r2.__dict__.keys())))
# __class__ 查看實(shí)例所屬類
print('Record.__class__={}'.format(Record.__class__))
print('r1.__class__={}'.format(r1.__class__))
# __bases__ 查看指定類名的直接超類元組
print('Record.__bases__={}'.format(Record.__bases__))
print('MyRecordA.__bases__={}'.format(MyRecordA.__bases__))
# MyRecordB 的 直接超類為 MyRecordA,不包括 Record
print('MyRecordB.__bases__={}'.format(MyRecordB.__bases__))
print('MyRecordC.__bases__={}'.format(MyRecordC.__bases__))
try:
print('r1.__bases__={}'.format(r1.__bases__))
except Exception as e:
# 實(shí)例對(duì)象沒有 __bases__ 屬性
print('r1.__bases__={}'.format(e))
示例
# 打開cmd,執(zhí)行下面示例
E:\\documents\\F盤>python testclass.py
Record.__dict__.keys()=['__module__', '__dict__', '__weakref__', '__doc__', 'name', 'age']
r1.__dict__.keys()=['name', 'age', 'sex']
r2.__dict__.keys()=[]
Record.__class__=<class 'type'>
r1.__class__=<class '__main__.Record'>
Record.__bases__=(<class 'object'>,)
MyRecordA.__bases__=(<class '__main__.Record'>,)
MyRecordB.__bases__=(<class '__main__.MyRecordA'>,)
MyRecordC.__bases__=(<class '__main__.MyRecordB'>, <class '__main__.MyRecordA'>)
r1.__bases__='Record' object has no attribute '__bases__'
1.4 類外定義方法
可以在class外定義方法,然后給類或?qū)嵗{(diào)用。
文件
E**: \\documents\\F盤\\testclass .**py
class Record:pass
# 類外定義方法
def printRecord(self):
print('self.姓名:{},年齡:{}'.format(self.name,self.age))
if __name__ == '__main__':
Record.name = '梯閱線條'
Record.age = '18'
r1 = Record()
r2 = Record()
r1.name = 'r1.name'
r1.age = 'r1.age'
# 普通函數(shù)使用
printRecord(Record)
printRecord(r1)
printRecord(r2)
# 賦值給類進(jìn)行使用
Record.printRec = printRecord
Record.printRec(Record)
r1.printRec()
r2.printRec()
示例
# 打開cmd,執(zhí)行下面示例
E:\\documents\\F盤>python testclass.py
self.姓名:梯閱線條,年齡:18
self.姓名:r1.name,年齡:r1.age
self.姓名:梯閱線條,年齡:18
self.姓名:梯閱線條,年齡:18
self.姓名:r1.name,年齡:r1.age
self.姓名:梯閱線條,年齡:18
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
Value
+關(guān)注
關(guān)注
0文章
11瀏覽量
9029 -
python
+關(guān)注
關(guān)注
58文章
4889瀏覽量
90327
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
如何使用Python的類? 優(yōu)勢有哪些?
,它描述了事務(wù)的共性。在搜索類屬性時(shí),python首先找到實(shí)例,然后在實(shí)例中找到屬性,當(dāng)找不到時(shí),它將在
發(fā)表于 07-30 18:08
python類的多態(tài)和類的property屬性
property ,其實(shí)是 Python 中一個(gè)內(nèi)置的裝飾器,它可以在新式類中把一個(gè)函數(shù) 改造 成屬性。當(dāng)你讀取屬性值時(shí),會(huì)進(jìn)入被 property 裝飾的函數(shù)。當(dāng)你對(duì)
發(fā)表于 03-09 16:38
python類的理解與使用
python類的理解與使用 1. 通俗理解類 類(英文名 class),是具有相同特性(屬性)和行為(方法)的對(duì)象(
python類的多態(tài)和類的property屬性
python類的多態(tài) 多態(tài),是指在同一類型下的不同形態(tài)。 比如下面這段代碼 class People: def speak(self): passclass American(People
SystemVerilog中的類的賦值
當(dāng)我們聲明一個(gè)類時(shí)還沒有分配內(nèi)存,只有在實(shí)例化(new())時(shí)才會(huì)分配內(nèi)存。這個(gè)時(shí)候?qū)ο缶浔赶虮环峙涞膬?nèi)存,下面是對(duì)象句柄賦值的示例。
簡述python類實(shí)例及構(gòu)造函數(shù)基礎(chǔ)
個(gè)入?yún)ⅰ?
方法可以通過實(shí)例(比如,I2.w())或類(C3.w(I2))進(jìn)行調(diào)用。
通過實(shí)例調(diào)用時(shí),第一個(gè)入?yún)⑼ǔ閟elf,python會(huì)自動(dòng)傳入。
Python類的屬性和方法是什么
編程中我們用類來創(chuàng)建對(duì)象。日常生活中的汽車設(shè)計(jì)圖就是我們Python中的類。日常生活中的小汽車就是Python中的對(duì)象。
Python中的類和對(duì)象詳解
Python 是一種面向?qū)ο蟮木幊陶Z言,它支持類和對(duì)象。類是一種用戶自定義的數(shù)據(jù)類型,用于定義對(duì)象的屬性和方法。對(duì)象是類的
python循環(huán)創(chuàng)建變量并賦值
循環(huán)是Python編程中非常重要的一個(gè)概念,它可以讓我們輕松地重復(fù)執(zhí)行某些代碼塊,從而簡化編程過程并提高代碼的效率。在循環(huán)中,我們經(jīng)常需要?jiǎng)?chuàng)建變量并賦值,這是非常常見的操作。接下來,我將詳盡地解釋在
proteus屬性賦值工具怎么用
Proteus是一種電路設(shè)計(jì)和仿真軟件,在進(jìn)行電路設(shè)計(jì)和仿真時(shí),屬性賦值是非常重要的步驟。屬性賦值工具可以幫助用戶快速有效地配置電路元件的屬性
mapgis如何給區(qū)屬性賦值
MapGIS是一款功能強(qiáng)大的地理信息系統(tǒng)軟件,它提供了豐富的功能和工具,使用戶能夠?qū)Φ乩頂?shù)據(jù)進(jìn)行快速、高效的管理和分析。其中一個(gè)重要的功能就是給區(qū)屬性賦值,即對(duì)地圖中的區(qū)域進(jìn)行分類和標(biāo)記,以便更好
簡述python空類和實(shí)例屬性賦值
評(píng)論