Python函數


Python面向對象

類和方法

對象object,實例instance

屬於某個類的一個具體個體

類class

對同一類事物共同屬性特征和能做事的概括 類名大寫開頭

類變量

屬於某一個類的自己的變量

work(self)定義的時候

必須有,調用的時候不能傳

1 定義類:
2 class 類名:
3 ....屬性
4 ....方法
5 ....def 方法名(self,....):
6 #【第一個參數默認self,定義時必須有,調用不用傳,是當前類的對象】

類定義完不調用,不會執行,類內方法需要通過對象調用

生成對象

通過構造方法生成。 類名(.....)

實例變量

屬於對象他自己的屬性 

1 zs = Ren()
2 zs.work()
3 zs.name='zhangsan' 《《《《
4 print(zs.name)

沒有實例方法

構造方法/構造函數

生成對象必會調用構造方法

    • 方法名是固定的 __init__
    • 通過類名調用,即Ren()就調用
    • 不能寫return語句,默認返回對象
    • 定義類時,若沒有構造,系統默認創建
1 class Ren:
2 ....def __init__(self,a):
3 ....print('‐‐‐helloworld‐‐‐')
4 
5 zs=Ren(asfasaf) # 傳到a里面

繼承

子類繼承父類

1 class BlackPerson(Ren,Animal):
2 ....color='black'
3 ....def run(self):
4 ........print('‐‐‐‐‐run fast‐‐‐‐‐')

子類間不能互相調用,沒有關系

子類可以繼承多個父類

注意避免邏輯混亂,相互繼承,或既是父類又是父類的父類

高內聚,能復用盡可能復用

低耦合,能拆開盡可能拆開

繼承盡量避免超過3代 

構造函數的繼承

子類有用子類的

同時繼承多個父類,用先繼承的

父類還有父類,向上追溯

都沒有,系統創建

同名屬性的繼承

同上,都沒有就報錯

同名函數的繼承

override覆蓋、overwrite重寫:子類有父類同名的屬性方法,方法名相同,參數也相同

overloading 重載:子類有父類同名的方法,方法名相同,參數不同

super(類1,對象1)

對象1調用類1的父類屬性,方法

1 super(Ren,bp).run()

身份運算符is

通過判斷存儲id相同

isinstance(對象1,類1)

判斷對象1是否是類1的對象,是返回True否返回False

isinstance() 與 type() 區別:

type() 不會認為子類是一種父類類型,不考慮繼承關系。

isinstance() 會認為子類是一種父類類型,考慮繼承關系。

如果要判斷兩個類型是否相同推薦使用 isinstance()。 

1 >>>a = 2
2 >>> isinstance (a,int)
3 True
4 >>> isinstance (a,str)
5 False
6 >>> isinstance (a,(str,int,list)) # 是元組中的一個返回 True
7 True

issubclass(類1,類2)

判斷類1是否是類2的子類,是返回True否返回False

private

__開頭,私有的,有效范圍在class內部,出了class邊界,類對象子類對象都不能調用

protected

_開頭,受保護的,不建議跨文件包調用,但是from...import* 出錯

模塊

調用:

本文件調用:

方法名(....參數值....)

跨文件調用: 

1 #########[法1]#########
2 import 包1.包2.包3....文件名
3 包1.包2.包3....文件名.方法名(....參數值....)
4 #########[法2]#########
5 from 包1.包2.包3....文件名 import 方法名【*:代替所有方法名】
6 方法名(....參數值....)

常用方法 :

 1 import time
 2 time.strftime("%Y‐%m‐%d %H:%M:%S",time.localtime())
 3 %Y # 4位年
 4 %y # 2位年
 5 %m #
 6 %d #
 7 %H # 24小時制小時
 8 %I # 12小時制小時
 9 %M #
10 %S #
11 time.sleep(數字)
12 # 當前進程休眠 數字 秒
1 import calendar
2 calendar.isleap(年): 判斷年是否是閏年,如果是返回True,否則返回False
1 import random
2 random.randint(數字1,數字2):生成 》=數字1,《=數字2的整數的一個隨機數

數據的讀取

1 import pymysql
2 ###創建連接 host:數據庫地址,user:用戶,passwd:密碼,db:數據庫名
3 conn=pymysql.connect(host='localhost',user='root',passwd='',db='test1')
4 cursor=conn.cursor()
 1 #通過游標執行sql語句,返回影響條數
 2 ###增加一條
 3 cursor.execute('update student set s_name=\'qingcai\' where s_id=1')
 4 conn.commit()
 5 
 6 ###返回查詢結果 條數
 7 aa=cursor.execute('select * from student')
 8 print(aa)
 9 ###返回查詢結果一條
10 bb=cursor.fetchone()
11 print(bb)
12 ###返回查詢結果多條
13 cc=cursor.fetchmany(2)
14 print(cc)
15 ###返回查詢所有條
16 dd=cursor.fetchall()
17 print(dd)
18 
19 ###關閉游標
20 cursor.close()
21 ###關閉連接
22 conn.close()

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM