【09】Python 面向物件
阿新 • • 發佈:2018-11-14
1.基本概念
1.1類、物件、屬性、方法、構造/解構函式
- 類:一個模板,模型
- 例項、物件:就是根據這個模板造出來的東西
- 例項化:就是模型做成例項的過程。
- 屬性:類裡面的變數
- 方法:類裡面的函式
- 建構函式:在類初始化的時候做的一些操作,例項化的時候它會自動執行。
- 解構函式:在例項被銷燬的時候執行的操作。
1 class People: #python3裡只有新式類 2 eye = 2 #屬性 3 mouth = 1 4 shengao = 180 5 money=1000000 6 def __init__(self,name): 7 self.name = name #建構函式,類在初始化做的一些操作 8 print('造了一個人,這個人是%s'%name) 9 def cry(self): #方法 10 print('哭。。。') 11 def makeMoney(self): #self代表的就是這個類的例項 12 print('self的記憶體地址',id(self)) 13 print('%s 掙了20w'%self.name ) 14 15 xiaojun = People('小軍') #例項化,xiaojun就是一個例項
1 class Phone: 2 def __del__(self):#解構函式 3 print('哈哈哈哈,我是解構函式!!') 4 def call(self,name): 5 print('為%s打call,為%s打電話!'%(name,name)) 6 def __init__(self): 7 self.test = 'testabc' 8 print('我是建構函式') 9 10 iphonx = Phone()11 print(iphonx.test) 12 iphonx.call('小軍')
#執行結果 我是建構函式 testabc 為小軍打call,為小軍打電話! 哈哈哈哈,我是解構函式!!
1.2例項變數、類變數、屬性方法
- 例項變數:必須例項化之後才可以用的變數,它是存在例項裡面的
- 類變數:不需要例項化就可以用,定義在類裡面的,是公共的。
- 屬性方法:看著像變數的一個方法。
1 class People: 2 country = 'China' #這是類變數 3 def __init__(self,name,sex): 4 self.name = name #這是例項變數 5 self.sex = sex 6 def say(self): 7 print('name '+self.name) 8 print('sex'+self.sex) 9 print('country'+self.country) 10 11 @property #把一個函式變成一個變數,這個變數的值就是函式的返回值;缺點是不能傳參 12 def get_name(self): 13 return self.name 14 15 print(People.country) 16 xiaojun = People("xiaojun",'男') 17 xiaojun.say() 18 print(xiaojun.get_name) #屬性方法的使用
#執行結果 China name xiaojun sex男 countryChina xiaojun
2.self的作用
self代表的就是例項
1 class People: 2 money=100 3 def __init__(self,name): 4 self.name = name 5 print('造了一個人,這個人是%s'%name) 6 def makeMoney(self): 7 print('self的記憶體地址',id(self)) 8 print('%s 掙了20w'%self.name ) 9 10 xiaojun = People('小軍') 11 print('小軍的記憶體地址',id(xiaojun)) #id()檢視記憶體地址 12 xiaojun.makeMoney() 13 People.makeMoney(xiaojun) 14 15 hailong = People('海龍') 16 print('海龍的記憶體地址',id(hailong)) 17 hailong.makeMoney()
#執行結果,self就是物件本身 造了一個人,這個人是小軍 小軍的記憶體地址 32212024 self的記憶體地址 32212024 小軍 掙了20w self的記憶體地址 32212024 小軍 掙了20w 造了一個人,這個人是海龍 海龍的記憶體地址 32213592 self的記憶體地址 32213592 海龍 掙了20w
3.例子:資料庫操作
1 import pymysql 2 3 class MySQL: 4 def __init__(self,host,user,password,db,port=3306,charset='utf8'): #建構函式 5 self.conn = pymysql.connect(host=host,user=user,password=password,db=db,port=port,charset=charset) 6 self.cur = self.conn.cursor(cursor=pymysql.cursors.DictCursor) 7 #初始化的時候就連線資料庫 8 def execute_many(self,sql): 9 self.cur.execute(sql) 10 return self.cur.fetchall() # [ {},{} ] 11 def execute_one(self,sql): 12 self.cur.execute(sql) 13 return self.cur.fetchone() 14 def __del__(self): #解構函式 15 self.cur.close() 16 self.conn.close() 17 print('連線已經關閉') 18 19 db = MySQL('118.24.3.40','jxz','123456','jxz')
4.繼承
1 class Lw: 2 money = 100000 3 house = '10套' 4 def driver(self): 5 print('開車') 6 def chouyan(self): 7 print('抽菸') 8 def hejiu(self): 9 print('喝酒') 10 def tangtou(self): 11 print('燙頭') 12 13 class Xw(Lw): #Xw繼承了Lw 14 def huaqian(self): 15 print('花錢。。。')