網(wǎng)站首頁 編程語言 正文
前言
在學習python-100-days時,在面向?qū)ο缶幊袒A(chǔ)的那一塊,封裝一個class時,突然出現(xiàn)def __init__
的方法,剛開始時,對他的理解很模糊,為什么定義一個類需要用到def __init__
。
于是翻找了一些資料,大概就是兩種定義方式如下:
第一種定義方式如下:
class Student(object): # __init__是一個特殊方法用于在創(chuàng)建對象時進行初始化操作 # 通過這個方法我們可以為學生對象綁定name和age兩個屬性 def __init__(self, name, age): self.name = name self.age = age
上面這一種,是在學習python-100-days時,里面的一種定義方式。里面是包含兩個參數(shù) name
和 age
。在實例的時候,必須要傳入這兩個參數(shù)的值進去。
stu = Student() # 報錯
如果上面直接實例它的話就會報錯:TypeError missing 2 required positional arguments: 'name' and 'age'
正常情況下,我們應(yīng)該傳入?yún)?shù):
stu = Student('大冰', 19) # 正常實例
然后我們可以利用__dict__
方法查看對象的屬性。
print(stu.__dict__) # 打印出: {'name': '大冰', 'age': 19}
或者我們可以直接給__init__
方法設(shè)置一個默認參數(shù),然后直接實例就不會報錯了。
def __init__(self, name = '周星星', age = 12): self.name = name self.age = age stu = Student() # 不會報錯,正常實例
第二種定義方式如下:
class Student(object): def __init__(self): self.name = None self.age = None
以第一種的區(qū)別,這種定義方式時,沒有形參的。但是它已經(jīng)指定name
和 age
都是 None
, 相當于這兩個參數(shù)已經(jīng)賦值,不過是None
。
這種形式是可以直接實例對象,然后再給對象里的屬性賦值:
stu = Student() # 正常實例 """查看stu對象的屬性是什么狀態(tài)""" print(stu.__dict__) # 打印出:{'name': None, 'age': None}
然后再來重新給對象的屬性賦值:
stu.name = '陳冠希' stu.age = 16
以上就是__init__
方法定義的一些區(qū)別。
那么為什么在class中 要定義__init__
方法呢?因為他是一個初始化方法,沒有初始化的話,實例后的對象,用__dict__
方法查看對象里面的屬性將是空的。
總結(jié)
原文鏈接:https://blog.csdn.net/qq_41308489/article/details/111701629
相關(guān)推薦
- 2022-09-18 C++?STL反向迭代器的實現(xiàn)_C 語言
- 2022-05-23 如何在Python?中使用?join()?函數(shù)把列表拼接成一個字符串_python
- 2022-10-14 SpringCloud組件之Gateway微服務(wù)網(wǎng)關(guān)
- 2022-12-24 Golang實現(xiàn)組合模式和裝飾模式實例詳解_Golang
- 2023-03-03 react?native圖片解析流程詳解_React
- 2023-06-16 C#函數(shù)out多個返回值問題_C#教程
- 2023-01-14 Python?pandas中to_sql的使用及問題詳解_python
- 2022-07-04 PyTorch搭建LSTM實現(xiàn)多變量時序負荷預(yù)測_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支