網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
前言
因?yàn)閖ava開(kāi)發(fā)的習(xí)慣,想要在python開(kāi)發(fā)中使用類(lèi)似JavaBean的結(jié)構(gòu)。
復(fù)制型編寫(xiě)
在python可以直接結(jié)合java中的編寫(xiě)習(xí)慣編寫(xiě)getter和setter方法。下方是一個(gè)示例:
class DataBean: """bean類(lèi)""" def __init__(self): """構(gòu)造方法""" self.username: str = "" self.password: str = "" def set_username(self, username: str): """設(shè)置用戶名""" self.username = username def set_password(self, password: str): """設(shè)置密碼""" self.password = password def get_username(self): """獲取用戶名""" return self.username def get_password(self): """"獲取密碼""" return self.password
這是結(jié)合java的習(xí)慣與python類(lèi)的使用寫(xiě)出的getter和setter結(jié)構(gòu),當(dāng)然也可以完全按照java中的寫(xiě)法,參考下方示例:
class DataBean: """bean類(lèi)""" # 用戶名 username: str = "" # 密碼 password: str = "" def set_username(self, username: str): """設(shè)置用戶名""" self.username = username def set_password(self, password: str): """設(shè)置密碼""" self.password = password def get_username(self): """獲取用戶名""" return self.username def get_password(self): """"獲取密碼""" return self.password
其實(shí)就是將構(gòu)造方法中通過(guò)self定義的變量提取出來(lái),效果是一致的。
使用python的裝飾器
在python內(nèi)置的裝飾器中,@property和@XXX.setter是針對(duì)于getter和setter方法的不二之選。
當(dāng)一個(gè)方法(函數(shù))的最終目的是返回一個(gè)值時(shí),可以@property裝飾該方法(因?yàn)閖ava的使用習(xí)慣,我更想稱(chēng)之為注解),這樣就可以達(dá)成getter方法。
當(dāng)在一個(gè)方法的上方使用XXX.setter裝飾時(shí),代表可以直接通過(guò)類(lèi)實(shí)例對(duì)象名稱(chēng).變量名為其變量賦值,其中XXX代表變量名同時(shí)也是方法(函數(shù))名稱(chēng),具體可以看下方示例:
class DataBean: """bean類(lèi)""" # 替代setter方法 @username.setter def username(self, username: str): """設(shè)置用戶名""" self.username = username @password.setter def password(self, password: str): """設(shè)置密碼""" self.password = password # 替代getter方法 @property def username(self): """獲取用戶名""" return self.username @property def password(self): """"獲取密碼""" return self.password # 測(cè)試 data_bean = DataBean() # 直接賦值 date_bean.username = "123" print(data_bean.username)
總結(jié)
原文鏈接:https://blog.csdn.net/qq_25856179/article/details/123653631
相關(guān)推薦
- 2022-12-01 修改Nginx源碼實(shí)現(xiàn)worker進(jìn)程隔離實(shí)現(xiàn)詳解_nginx
- 2023-11-17 Python如何使用matlibplot繪制3D柱形圖
- 2022-10-11 Flutter?語(yǔ)法進(jìn)階抽象類(lèi)和接口本質(zhì)區(qū)別詳解_Dart
- 2022-11-29 redis命令行操作庫(kù)、鍵、和五大數(shù)據(jù)類(lèi)型詳解
- 2023-02-04 Go語(yǔ)言中websocket的使用demo分享_Golang
- 2022-04-18 css設(shè)置彈性布局讓中間內(nèi)容寬度自適應(yīng)
- 2022-05-10 spring jdbctample方式訪問(wèn)數(shù)據(jù)庫(kù)
- 2022-12-21 Android?全局通知彈窗示例分析詳解_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支