Python面向?qū)ο缶幊蹋ㄒ唬?/h1>
更新時(shí)間:2022年05月30日 09:16:36 作者:springsnow
本文詳細(xì)講解了Python的面向?qū)ο缶幊?,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
和其它編程語(yǔ)言相比,Python 在盡可能不增加新的語(yǔ)法和語(yǔ)義的情況下加入了類機(jī)制。
Python中的類提供了面向?qū)ο缶幊痰乃谢竟δ埽侯惖睦^承機(jī)制允許多個(gè)基類,派生類可以覆蓋基類中的任何方法,方法中可以調(diào)用基類中的同名方法。
對(duì)象可以包含任意數(shù)量和類型的數(shù)據(jù)。
一、程序中定義類和對(duì)象
1、 定義類
定義函數(shù)時(shí),函數(shù)只檢測(cè)語(yǔ)法,不執(zhí)行代碼,但是定義類的時(shí)候,類體代碼會(huì)在類定義階段就立刻執(zhí)行,并且會(huì)產(chǎn)生一個(gè)類的名稱空間,也就是說(shuō)類的本身其實(shí)就是一個(gè)容器/名稱空間(__dict__),是用來(lái)存放名字的,這是類的用途之一。
語(yǔ)法格式如下:
class ClassName:
.
.
.
類實(shí)例化后,可以使用其屬性,實(shí)際上,創(chuàng)建一個(gè)類之后,可以通過(guò)類名訪問(wèn)其屬性。
使用類名訪問(wèn)其屬性:
# 注意類中定義變量使用駝峰體
class OldboyStudent():
school = 'oldboy'
def choose_course(self):
print('is choosing course')
print(OldboyStudent.__dict__)
# {'__module__': '__main__', 'school': 'oldboy', 'choose_course': , '__dict__': <attribute '__dict__' of 'OldboyStudent' objects>, '__weakref__': <attribute '__weakref__' of 'OldboyStudent' objects>, '__doc__': None}
print(OldboyStudent.__dict__['school'])
# oldboy
print(OldboyStudent.__dict__['choose_course'])
#
try:
OldboyStudent.__dict__['choose_course']()
except Exception as e:
print('error:', e)
# error: choose_course() missing 1 required positional argument: 'self'
print(OldboyStudent.school)
# oldboy
print(OldboyStudent.choose_course(111))
# is choosing course
print(OldboyStudent.choose_course)
#
OldboyStudent.country = 'China'
print(OldboyStudent.__dict__['country'])
# 'China'
delOldboyStudent.school
print(OldboyStudent.__dict__)
# {'__module__': '__main__', 'choose_course': , '__dict__': <attribute '__dict__' of 'OldboyStudent' objects>, '__weakref__': <attribute '__weakref__' of 'OldboyStudent' objects>, '__doc__': None, 'country': 'CHINA'}
2、 定義對(duì)象
調(diào)用類即可產(chǎn)生對(duì)象,調(diào)用類的過(guò)程,又稱為類的實(shí)例化,實(shí)例化的結(jié)果稱為類的對(duì)象/實(shí)例。
stu1 = OldboyStudent() # 調(diào)用類會(huì)得到一個(gè)返回值,該返回值就是類的一個(gè)具體存在的對(duì)象/實(shí)例
print(stu1.school) # oldboy
stu2 = OldboyStudent() # 調(diào)用類會(huì)得到一個(gè)返回值,該返回值就是類的一個(gè)具體存在的對(duì)象/實(shí)例
print(stu2.school) # oldboy
stu3 = OldboyStudent() # 調(diào)用類會(huì)得到一個(gè)返回值,該返回值就是類的一個(gè)具體存在的對(duì)象/實(shí)例
stu3.choose_course() # is choosing course
二、定制對(duì)象獨(dú)有特征
1、引入
對(duì)于上述的學(xué)生類,如果類的屬性改了,則其他對(duì)象的屬性也會(huì)隨之改變
class OldboyStudent():
school = 'oldboy'
def choose_course(self):
print('is choosing course')
stu1 = OldboyStudent()
stu2 = OldboyStudent()
<strong>OldboyStudent.school</strong> = 'OLDBOY'
print(stu1.school) # <strong>OLDBOY</strong>
print(stu2.school) # OLDBOY
2、定制對(duì)象獨(dú)有特征
對(duì)象本質(zhì)類似于類,也是一個(gè)名稱空間,但是對(duì)象的名稱空間存放對(duì)象獨(dú)有的名字,而類中存放的是對(duì)象們共有的名字。
因此我們可以直接為對(duì)象單獨(dú)定制名字。
print(stu1.__dict__) # {}
print(stu2.__dict__) # {}
stu1.name = 'tank'
stu1.age = 18
stu1.gender = 'male'
print(stu1.name, stu1.age, stu1.gender)
# tank 18 male
try:
print(stu2.name, stu2.age, stu2.gender)
except Exception as e:
print(e)
# 'OldboyStudent' object has no attribute 'name'
stu2.name = 'sean'
stu2.age = 19
stu2.gender = 'female'
print(stu2.name, stu2.age, stu2.gender)
# sean 19 female
3、對(duì)象屬性查找順序
首先從自身查找,沒找到往類中找,類中沒有則會(huì)報(bào)錯(cuò)。即對(duì)象的屬性查找順序?yàn)椋鹤陨?mdash;>類—>父類—>報(bào)錯(cuò)。
class OldboyStudent:
school = 'oldboy'
count = 0
aa = 10 #類的的公共變量aa
def __init__(self, x, y, z): # 會(huì)在調(diào)用類時(shí)自動(dòng)觸發(fā)
self.name = x # stu1.name='耗哥'
self.age = y # stu1.age=18
self.sex = z # stu1.sex='male'
OldboyStudent.count += 1
# self.count += 1
self.aa = 1 #對(duì)象的私有變量aa
def choose_course(self):
print('is choosing course')
print(OldboyStudent.count) # 0
stu1 = OldboyStudent('nick', 18, 'male')
print(stu1.count) # 1
stu2 = OldboyStudent('sean', 17, 'male')
print(stu2.count) # 2
stu3 = OldboyStudent('tank', 19, 'female')
print(stu3.count) # 3
print(OldboyStudent.count) # 3
# 由于上述修改的是類屬性,類屬性的count已經(jīng)被修改為3,所以其他實(shí)例的count都為3
print(stu1.count) # 3
print(stu2.count) # 3
print(stu3.count) # 3
# 由于aa是私有屬性,因此stu們都會(huì)用自己私有的aa,不會(huì)用類的aa。count也不屬于對(duì)象
print(stu1.__dict__) # {'name': 'nick', 'age': 18, 'sex': 'male', 'aa': 1}
print(stu2.__dict__) # {'name': 'sean', 'age': 17, 'sex': 'male', 'aa': 1}
print(stu3.__dict__) # {'name': 'tank', 'age': 19, 'sex': 'female', 'aa': 1}
4、類定義階段定制屬性
類有一個(gè)名為 __init__() 的特殊方法(構(gòu)造方法),該方法在類實(shí)例化時(shí)會(huì)自動(dòng)調(diào)用。
調(diào)用類時(shí)發(fā)生兩件事:
- 創(chuàng)造一個(gè)空對(duì)象
- 自動(dòng)觸發(fā)類中__init__功能的執(zhí)行,將stu1以及調(diào)用類括號(hào)內(nèi)的參數(shù)一同傳入。
class OldboyStudent:
school = 'oldboy'
def __init__(self, name, age, gender):
"""調(diào)用類的時(shí)候自動(dòng)觸發(fā)"""
self.name = name
self.age = age
self.gender = gender
print('*' * 50)
def choose_course(self):
print('is choosing course')
try:
stu1 = OldboyStudent()
except Exception as e:
print(e)
# __init__() missing 3 required positional arguments: 'name', 'age', and 'gender'
stu1 = OldboyStudent('nick', 18, 'male')
# **************************************************
print(stu1.__dict__)
# {'name': 'nick', 'age': 18, 'gender': 'male'} #沒有school
三、對(duì)象的綁定方法
類名稱空間中定義的數(shù)據(jù)屬性和函數(shù)屬性都是共享給所有對(duì)象用的
對(duì)象名稱空間中定義的只有數(shù)據(jù)屬性,而且是對(duì)象所獨(dú)有的數(shù)據(jù)屬性。
1、類使用對(duì)象的綁定對(duì)象
類中定義的函數(shù)是類的函數(shù)屬性,類可以使用它,但使用的就是一個(gè)普通的函數(shù)而已,意味著需要完全遵循函數(shù)的參數(shù)規(guī)則,該傳幾個(gè)值就傳幾個(gè)
class OldboyStudent:
school = 'oldboy'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.sex = gender
def choose_course(self):
print(f'{self.name} choosing course')
def func(self):
print('from func')
print(OldboyStudent.choose_course)
# <function OldboyStudent.choose_course at 0x00000000023AEF70>
try:
OldboyStudent.choose_course(123)
except Exception as e:
print(e)
# 'int' object has no attribute 'name'
2、對(duì)象使用對(duì)象的綁定方法
類中定義的函數(shù)是共享給所有對(duì)象的,對(duì)象也可以使用,而且是綁定給對(duì)象用的,
綁定的效果:綁定給誰(shuí),就應(yīng)該由誰(shuí)來(lái)調(diào)用,誰(shuí)來(lái)調(diào)用就會(huì)將誰(shuí)當(dāng)作第一個(gè)參數(shù)自動(dòng)傳入。
類中定義的函數(shù),類確實(shí)可以使用,但其實(shí)類定義的函數(shù)大多情況下都是綁定給對(duì)象用的,所以在類中定義的函數(shù)都應(yīng)該自帶一個(gè)參數(shù)self。
self代表類的實(shí)例,而非類
類的方法與普通的函數(shù)只有一個(gè)特別的區(qū)別——它們必須有一個(gè)額外的第一個(gè)參數(shù)名稱, 按照慣例它的名稱是 self,self 代表的是類的實(shí)例。
self 不是 python 關(guān)鍵字,我們把他換成 aaabbb也是可以正常執(zhí)行的:
class OldboyStudent:
school = 'oldboy'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.sex = gender
def choose_course(self):
print(f'{self.name} choosing course')
def func(self):
print('from func')
stu1 = OldboyStudent('nick', 18, 'male')
stu2 = OldboyStudent('sean', 17, 'male')
stu3 = OldboyStudent('tank', 19, 'female')
stu1.choose_course() #相當(dāng)于 OldboyStudent.choose_course(stul) 對(duì)象調(diào)對(duì)象綁定的方法,會(huì)自動(dòng)傳參
# nick choosing course
stu2.choose_course()
# sean choosing course
stu3.choose_course()
# tank choosing course
stu1.func()
# from func
stu2.func()
# from func
四、類與數(shù)據(jù)類型
python3中統(tǒng)一了類與類型的概念,類就是類型
class Foo:
def __init__(self,name):
self.name = name
f = Foo('name')
obj = Foo()
print(type(obj))
# <class '__main__.Foo'>
lis = [1, 2, 3] # 相當(dāng)于 lis = list([1,2,3])
print(type(lis))
# <class 'list'>
lis.append(4) # 對(duì)象調(diào)對(duì)象綁定的方法,會(huì)自動(dòng)傳參
list.append(lis,4) # 類調(diào)用對(duì)象綁定的方法,必須得傳參
對(duì)象其實(shí)就是一個(gè)高度整合的產(chǎn)物,整合數(shù)據(jù)與專門操作該數(shù)據(jù)的方法(綁定方法)
import pymysql
class Foo:
def __init__(self, host, port, db, chartset):
self.host = host
self.port = port
self.db = db
self.charset = chartset
def exc1(self, sql):
conn = pymysql.connect(self.host, self.port, self.db, self.charset)
conn.execute(sql)
return xxx
def exc2(self, proc_name):
conn = pymysql.connect(self.host, self.port, self.db, self.charsett)
conn.call_proc(proc_name)
return xxx
obj1 = Foo('1.1.1.1', 3306, 'db1', 'utf-8')
obj1.exc1('select * from t1')
obj1.exc1('select * from t2')
obj2 = Foo('1.1.1.2', 3306, 'db1', 'utf-8')
obj2.exc1('select * from t4')
到此這篇關(guān)于Python面向?qū)ο缶幊痰奈恼戮徒榻B到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
-
python正則表達(dá)式常見的知識(shí)點(diǎn)匯總
正則表達(dá)式提供了一些可用的匹配模式,比如忽略大小寫、多行匹配等,下面這篇文章主要給大家介紹了關(guān)于python正則表達(dá)式常見的知識(shí)點(diǎn),文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下 2022-05-05
-
Python實(shí)現(xiàn)線性判別分析(LDA)的MATLAB方式
今天小編大家分享一篇Python實(shí)現(xiàn)線性判別分析(LDA)的MATLAB方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧 2019-12-12
-
Python利用CNN實(shí)現(xiàn)對(duì)時(shí)序數(shù)據(jù)進(jìn)行分類
這篇文章主要為大家詳細(xì)介紹了Python如何利用CNN實(shí)現(xiàn)對(duì)時(shí)序數(shù)據(jù)進(jìn)行分類功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下 2023-02-02
-
Python使用mmap實(shí)現(xiàn)內(nèi)存映射文件操作
內(nèi)存映射通??梢蕴岣逫/O的性能,本文主要介紹了Python使用mmap實(shí)現(xiàn)內(nèi)存映射文件操作,分享給大家,感興趣的可以了解一下 2021-06-06
-
python實(shí)現(xiàn)對(duì)csv文件的列的內(nèi)容讀取
今天小編就為大家分享一篇python實(shí)現(xiàn)對(duì)csv文件的列的內(nèi)容讀取,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧 2018-07-07
-
TF-IDF與余弦相似性的應(yīng)用(一) 自動(dòng)提取關(guān)鍵詞
2017-12-12
最新評(píng)論
和其它編程語(yǔ)言相比,Python 在盡可能不增加新的語(yǔ)法和語(yǔ)義的情況下加入了類機(jī)制。
Python中的類提供了面向?qū)ο缶幊痰乃谢竟δ埽侯惖睦^承機(jī)制允許多個(gè)基類,派生類可以覆蓋基類中的任何方法,方法中可以調(diào)用基類中的同名方法。
對(duì)象可以包含任意數(shù)量和類型的數(shù)據(jù)。
一、程序中定義類和對(duì)象
1、 定義類
定義函數(shù)時(shí),函數(shù)只檢測(cè)語(yǔ)法,不執(zhí)行代碼,但是定義類的時(shí)候,類體代碼會(huì)在類定義階段就立刻執(zhí)行,并且會(huì)產(chǎn)生一個(gè)類的名稱空間,也就是說(shuō)類的本身其實(shí)就是一個(gè)容器/名稱空間(__dict__),是用來(lái)存放名字的,這是類的用途之一。
語(yǔ)法格式如下:
class ClassName:
.
.
.類實(shí)例化后,可以使用其屬性,實(shí)際上,創(chuàng)建一個(gè)類之后,可以通過(guò)類名訪問(wèn)其屬性。
使用類名訪問(wèn)其屬性:
# 注意類中定義變量使用駝峰體
class OldboyStudent():
school = 'oldboy'
def choose_course(self):
print('is choosing course')
print(OldboyStudent.__dict__)
# {'__module__': '__main__', 'school': 'oldboy', 'choose_course': , '__dict__': <attribute '__dict__' of 'OldboyStudent' objects>, '__weakref__': <attribute '__weakref__' of 'OldboyStudent' objects>, '__doc__': None}
print(OldboyStudent.__dict__['school'])
# oldboy
print(OldboyStudent.__dict__['choose_course'])
#
try:
OldboyStudent.__dict__['choose_course']()
except Exception as e:
print('error:', e)
# error: choose_course() missing 1 required positional argument: 'self'
print(OldboyStudent.school)
# oldboy
print(OldboyStudent.choose_course(111))
# is choosing course
print(OldboyStudent.choose_course)
#
OldboyStudent.country = 'China'
print(OldboyStudent.__dict__['country'])
# 'China'
delOldboyStudent.school
print(OldboyStudent.__dict__)
# {'__module__': '__main__', 'choose_course': , '__dict__': <attribute '__dict__' of 'OldboyStudent' objects>, '__weakref__': <attribute '__weakref__' of 'OldboyStudent' objects>, '__doc__': None, 'country': 'CHINA'}2、 定義對(duì)象
調(diào)用類即可產(chǎn)生對(duì)象,調(diào)用類的過(guò)程,又稱為類的實(shí)例化,實(shí)例化的結(jié)果稱為類的對(duì)象/實(shí)例。
stu1 = OldboyStudent() # 調(diào)用類會(huì)得到一個(gè)返回值,該返回值就是類的一個(gè)具體存在的對(duì)象/實(shí)例 print(stu1.school) # oldboy stu2 = OldboyStudent() # 調(diào)用類會(huì)得到一個(gè)返回值,該返回值就是類的一個(gè)具體存在的對(duì)象/實(shí)例 print(stu2.school) # oldboy stu3 = OldboyStudent() # 調(diào)用類會(huì)得到一個(gè)返回值,該返回值就是類的一個(gè)具體存在的對(duì)象/實(shí)例 stu3.choose_course() # is choosing course
二、定制對(duì)象獨(dú)有特征
1、引入
對(duì)于上述的學(xué)生類,如果類的屬性改了,則其他對(duì)象的屬性也會(huì)隨之改變
class OldboyStudent():
school = 'oldboy'
def choose_course(self):
print('is choosing course')
stu1 = OldboyStudent()
stu2 = OldboyStudent()
<strong>OldboyStudent.school</strong> = 'OLDBOY'
print(stu1.school) # <strong>OLDBOY</strong>
print(stu2.school) # OLDBOY2、定制對(duì)象獨(dú)有特征
對(duì)象本質(zhì)類似于類,也是一個(gè)名稱空間,但是對(duì)象的名稱空間存放對(duì)象獨(dú)有的名字,而類中存放的是對(duì)象們共有的名字。
因此我們可以直接為對(duì)象單獨(dú)定制名字。
print(stu1.__dict__) # {}
print(stu2.__dict__) # {}
stu1.name = 'tank'
stu1.age = 18
stu1.gender = 'male'
print(stu1.name, stu1.age, stu1.gender)
# tank 18 male
try:
print(stu2.name, stu2.age, stu2.gender)
except Exception as e:
print(e)
# 'OldboyStudent' object has no attribute 'name'
stu2.name = 'sean'
stu2.age = 19
stu2.gender = 'female'
print(stu2.name, stu2.age, stu2.gender)
# sean 19 female3、對(duì)象屬性查找順序
首先從自身查找,沒找到往類中找,類中沒有則會(huì)報(bào)錯(cuò)。即對(duì)象的屬性查找順序?yàn)椋鹤陨?mdash;>類—>父類—>報(bào)錯(cuò)。
class OldboyStudent:
school = 'oldboy'
count = 0
aa = 10 #類的的公共變量aa
def __init__(self, x, y, z): # 會(huì)在調(diào)用類時(shí)自動(dòng)觸發(fā)
self.name = x # stu1.name='耗哥'
self.age = y # stu1.age=18
self.sex = z # stu1.sex='male'
OldboyStudent.count += 1
# self.count += 1
self.aa = 1 #對(duì)象的私有變量aa
def choose_course(self):
print('is choosing course')
print(OldboyStudent.count) # 0
stu1 = OldboyStudent('nick', 18, 'male')
print(stu1.count) # 1
stu2 = OldboyStudent('sean', 17, 'male')
print(stu2.count) # 2
stu3 = OldboyStudent('tank', 19, 'female')
print(stu3.count) # 3
print(OldboyStudent.count) # 3
# 由于上述修改的是類屬性,類屬性的count已經(jīng)被修改為3,所以其他實(shí)例的count都為3
print(stu1.count) # 3
print(stu2.count) # 3
print(stu3.count) # 3
# 由于aa是私有屬性,因此stu們都會(huì)用自己私有的aa,不會(huì)用類的aa。count也不屬于對(duì)象
print(stu1.__dict__) # {'name': 'nick', 'age': 18, 'sex': 'male', 'aa': 1}
print(stu2.__dict__) # {'name': 'sean', 'age': 17, 'sex': 'male', 'aa': 1}
print(stu3.__dict__) # {'name': 'tank', 'age': 19, 'sex': 'female', 'aa': 1}4、類定義階段定制屬性
類有一個(gè)名為 __init__() 的特殊方法(構(gòu)造方法),該方法在類實(shí)例化時(shí)會(huì)自動(dòng)調(diào)用。
調(diào)用類時(shí)發(fā)生兩件事:
- 創(chuàng)造一個(gè)空對(duì)象
- 自動(dòng)觸發(fā)類中__init__功能的執(zhí)行,將stu1以及調(diào)用類括號(hào)內(nèi)的參數(shù)一同傳入。
class OldboyStudent:
school = 'oldboy'
def __init__(self, name, age, gender):
"""調(diào)用類的時(shí)候自動(dòng)觸發(fā)"""
self.name = name
self.age = age
self.gender = gender
print('*' * 50)
def choose_course(self):
print('is choosing course')
try:
stu1 = OldboyStudent()
except Exception as e:
print(e)
# __init__() missing 3 required positional arguments: 'name', 'age', and 'gender'
stu1 = OldboyStudent('nick', 18, 'male')
# **************************************************
print(stu1.__dict__)
# {'name': 'nick', 'age': 18, 'gender': 'male'} #沒有school三、對(duì)象的綁定方法
類名稱空間中定義的數(shù)據(jù)屬性和函數(shù)屬性都是共享給所有對(duì)象用的
對(duì)象名稱空間中定義的只有數(shù)據(jù)屬性,而且是對(duì)象所獨(dú)有的數(shù)據(jù)屬性。
1、類使用對(duì)象的綁定對(duì)象
類中定義的函數(shù)是類的函數(shù)屬性,類可以使用它,但使用的就是一個(gè)普通的函數(shù)而已,意味著需要完全遵循函數(shù)的參數(shù)規(guī)則,該傳幾個(gè)值就傳幾個(gè)
class OldboyStudent:
school = 'oldboy'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.sex = gender
def choose_course(self):
print(f'{self.name} choosing course')
def func(self):
print('from func')
print(OldboyStudent.choose_course)
# <function OldboyStudent.choose_course at 0x00000000023AEF70>
try:
OldboyStudent.choose_course(123)
except Exception as e:
print(e)
# 'int' object has no attribute 'name'2、對(duì)象使用對(duì)象的綁定方法
類中定義的函數(shù)是共享給所有對(duì)象的,對(duì)象也可以使用,而且是綁定給對(duì)象用的,
綁定的效果:綁定給誰(shuí),就應(yīng)該由誰(shuí)來(lái)調(diào)用,誰(shuí)來(lái)調(diào)用就會(huì)將誰(shuí)當(dāng)作第一個(gè)參數(shù)自動(dòng)傳入。
類中定義的函數(shù),類確實(shí)可以使用,但其實(shí)類定義的函數(shù)大多情況下都是綁定給對(duì)象用的,所以在類中定義的函數(shù)都應(yīng)該自帶一個(gè)參數(shù)self。
self代表類的實(shí)例,而非類
類的方法與普通的函數(shù)只有一個(gè)特別的區(qū)別——它們必須有一個(gè)額外的第一個(gè)參數(shù)名稱, 按照慣例它的名稱是 self,self 代表的是類的實(shí)例。
self 不是 python 關(guān)鍵字,我們把他換成 aaabbb也是可以正常執(zhí)行的:
class OldboyStudent:
school = 'oldboy'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.sex = gender
def choose_course(self):
print(f'{self.name} choosing course')
def func(self):
print('from func')
stu1 = OldboyStudent('nick', 18, 'male')
stu2 = OldboyStudent('sean', 17, 'male')
stu3 = OldboyStudent('tank', 19, 'female')
stu1.choose_course() #相當(dāng)于 OldboyStudent.choose_course(stul) 對(duì)象調(diào)對(duì)象綁定的方法,會(huì)自動(dòng)傳參
# nick choosing course
stu2.choose_course()
# sean choosing course
stu3.choose_course()
# tank choosing course
stu1.func()
# from func
stu2.func()
# from func四、類與數(shù)據(jù)類型
python3中統(tǒng)一了類與類型的概念,類就是類型
class Foo:
def __init__(self,name):
self.name = name
f = Foo('name')
obj = Foo()
print(type(obj))
# <class '__main__.Foo'>
lis = [1, 2, 3] # 相當(dāng)于 lis = list([1,2,3])
print(type(lis))
# <class 'list'>
lis.append(4) # 對(duì)象調(diào)對(duì)象綁定的方法,會(huì)自動(dòng)傳參
list.append(lis,4) # 類調(diào)用對(duì)象綁定的方法,必須得傳參對(duì)象其實(shí)就是一個(gè)高度整合的產(chǎn)物,整合數(shù)據(jù)與專門操作該數(shù)據(jù)的方法(綁定方法)
import pymysql
class Foo:
def __init__(self, host, port, db, chartset):
self.host = host
self.port = port
self.db = db
self.charset = chartset
def exc1(self, sql):
conn = pymysql.connect(self.host, self.port, self.db, self.charset)
conn.execute(sql)
return xxx
def exc2(self, proc_name):
conn = pymysql.connect(self.host, self.port, self.db, self.charsett)
conn.call_proc(proc_name)
return xxx
obj1 = Foo('1.1.1.1', 3306, 'db1', 'utf-8')
obj1.exc1('select * from t1')
obj1.exc1('select * from t2')
obj2 = Foo('1.1.1.2', 3306, 'db1', 'utf-8')
obj2.exc1('select * from t4')到此這篇關(guān)于Python面向?qū)ο缶幊痰奈恼戮徒榻B到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python正則表達(dá)式常見的知識(shí)點(diǎn)匯總
正則表達(dá)式提供了一些可用的匹配模式,比如忽略大小寫、多行匹配等,下面這篇文章主要給大家介紹了關(guān)于python正則表達(dá)式常見的知識(shí)點(diǎn),文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
Python實(shí)現(xiàn)線性判別分析(LDA)的MATLAB方式
今天小編大家分享一篇Python實(shí)現(xiàn)線性判別分析(LDA)的MATLAB方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
Python利用CNN實(shí)現(xiàn)對(duì)時(shí)序數(shù)據(jù)進(jìn)行分類
這篇文章主要為大家詳細(xì)介紹了Python如何利用CNN實(shí)現(xiàn)對(duì)時(shí)序數(shù)據(jù)進(jìn)行分類功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-02-02
Python使用mmap實(shí)現(xiàn)內(nèi)存映射文件操作
內(nèi)存映射通??梢蕴岣逫/O的性能,本文主要介紹了Python使用mmap實(shí)現(xiàn)內(nèi)存映射文件操作,分享給大家,感興趣的可以了解一下2021-06-06
python實(shí)現(xiàn)對(duì)csv文件的列的內(nèi)容讀取
今天小編就為大家分享一篇python實(shí)現(xiàn)對(duì)csv文件的列的內(nèi)容讀取,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
TF-IDF與余弦相似性的應(yīng)用(一) 自動(dòng)提取關(guān)鍵詞
2017-12-12

