網站首頁 編程語言 正文
1.構造函數
__init__(self)
, 這個方法就是構造函數,在實例化的時候自動調用。
所有如果這個函數內有打印的方法,當實例出來的時候會打印里面的信息。
__init__
方法的第一個參數永遠都是self,表示創建實例本身,在__init__
方法內部,可以把各種屬性綁定到self,因為self指向創建的實例本身。
有了__init__
方法,在創建實例的時候,就不能傳入空的參數了,必須傳入與__init__
方法匹配的參數,但self不需要傳,Python解釋器自己會把實例變量傳進去。
def __init__(): pass
lass Baby: def __init__(self,name):#構造函數 self.name = name def cry(self): self.action = '哭了' print(self.action) feng = Baby('小紅') print(feng.name)#實例化時構造函數自動執行, print(feng.action)#cry方法未被執行,直接調用feng.action會報錯,object has no attribute對象沒有該屬性
由于cry方法未被執行,直接調用feng.action會報錯,object has no attribute對象沒有該屬性。解決方法有:
(1)在實例化對象后,先調用cry這個方法,在去打印feng.action屬性
class Baby: def __init__(self,name):#構造函數 self.name = name def cry(self): self.action = '哭了' print(self.action) feng = Baby('小紅') feng.cry()#先調用cry這個方法 print(feng.action)
(2)將cry這個方法放在構造函數里,這樣實例化的時候函數會被執行,feng.action屬性就生成了
class Baby: def __init__(self,name):#構造函數 self.name = name self.cry()#將cry這個方法放在構造函數里 def cry(self): self.action = '哭了' print(self.action) feng = Baby('小紅') print(feng.action)
2.析構函數
__del__(self)
, 這個方法就是析構函數,是在實例被銷毀時自動調用的。
當使用del 刪除對象時,會調用他本身的析構函數,另外當對象在某個作用域中調用完畢,在跳出其作用域的同時析構函數也會被調用一次,這樣可以用來釋放內存空間。
析構函數:實例被銷毀的時候執行的,不是必須
def __del__(): pass
import pymysql class MySQL(object): def __init__(self,host,user,passwd,db,port=3306,charset='utf8'):#構造函數,類實例化的時候執行 try: self.conn = pymysql.connect( host = host,user=user,passwd=passwd,db=db,port=port,charset=charset, autocommit=True # 自動提交,執行insert,update語句時,可以自動提交 ) except Exception as e: print('數據庫連接失敗,%s'%e) else: self.cur = self.conn.cursor(cursor=pymysql.cursors.DictCursor) def __del__(self):#析構函數,實例被銷毀的時候執行 self.cur.close() self.conn.close() print('數據庫連接關閉') def ex_sql(self,sql): try: self.cur.execute(sql) except Exception as e: print('sql語句錯誤,%s'%sql) else: self.res = self.cur.fetchall() return self.res #有沒有返回值都可以 my = MySQL('127.0.0.1', 'root', '123456', 'data') my.ex_sql('select * from stu') print(my.res)#可以用實例屬性取值 # print(my.ex_sql('select * from stu'))#也可以用實例方法的返回值 print('我是最后一行代碼')#執行完最后一行代碼,數據庫連接關閉
原文鏈接:https://blog.csdn.net/qdPython/article/details/127462676
相關推薦
- 2022-07-22 spring-boot設置跨域訪問方式
- 2023-02-02 python保留兩位小數的3種方法實例_python
- 2022-09-29 Kotlin協程Dispatchers原理示例詳解_Android
- 2022-09-29 Python3中map(),reduce(),filter()的詳細用法_python
- 2022-07-14 Python?socket如何實現服務端和客戶端數據傳輸(TCP)_python
- 2022-12-29 React引入css的三種方式小結_React
- 2023-12-12 SSM整合 spring-mybaits配置文件——設置數據庫字段名駝峰命名規則
- 2022-08-17 python熱力圖實現的完整實例_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支