1. 程式人生 > >【09】Python 面向物件

【09】Python 面向物件

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('花錢。。。')