日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 实例变量_Python的类变量和实例变量详解

發布時間:2025/3/21 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 实例变量_Python的类变量和实例变量详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Asuka

什么是類變量?

class Student:

name = 'Asuka'

age = '18'

...

上面定義的name和age就是類變量

什么是實例變量?

class Student:

def __init__(self,name,age)

self.name = name

self.age = age

...

上面定義的name和age就是實例變量

類變量和實例變量的區別和應用

類變量為所有實例化后的類共享,有點類似繼承的概念,實例化后,每個實例都會有這個屬性,有種default的意味,可以設置一個帶默認值的屬性.

實例變量為每個實例化后的類獨有,因為python類實例化之后會自動調用init方法,如果您在類里面定義了相同的屬性,那么init下的實例變量會重寫相同的類變量.

一般來說,我們更多的運用實例變量,因為按照嚴格的面向對象思想,類的所有屬性都應該是實例的,類變量根本就不應該存在的,不過類變量偶爾還是有一點用處的,比如設置默認值和常量.

關于dict的說明

大家在序列化類,比如轉成json格式,許多同學會想到先把類轉成dict,然后再轉成json.于是,同學們可能會考慮用dict.

我想告訴同學們的一句話是,使用dict方法只能序列化實例變量,無法序列化類變量.

如何寫出一個優美的面向對象的類

下面這句是關鍵

類應該保存描述自身的特點和能夠實現的行為.

1.盡量多使用實例變量,不要總想把類里面的資源return到外部

2.類下面的函數應該有操作實例變量的行為,也就是通常所說的方法

3.類里面不能只有staticmethod,classmethod這類的方法,因為這些還是面向過程的思維,不要一步步想著寫方法,根本沒用到自己實例的屬性

4.面向對象的思維其實就是一種造物主的思維,我們思考問題的時候要有一些靈性,少了什么,我們就直接創造一個出來就行了,別和解數學題一樣,總是在想求解方程中x,y,z等于什么.

如果大家有過python web編程經驗的話,就和編寫視圖函數是一樣的,我們編寫視圖函數的時候總是會事先假象我們有驗證層,模型層,視圖模型層等等分層,我們先定好整體的邏輯,事后再補齊對應層的函數,就和造物主有點類似,少了什么我們直接new一個就行了(為什么不能new一個對象出來呢?).

視圖函數內部總是會實例化一些驗證實例(wtforms),模型實例(sqlalchemy),業務邏輯等等內容,這些內容本來都是不存在的,都是我們在其他地方定義好的類或者函數,卻直接在視圖函數中用上來了.

Python 3.7的dataclass

from dataclasses import dataclass

@dataclass

class Student:

name:str

age:int

...

python 3.7版本中加了一個令人激動的dataclass裝飾器,簡單的實現類比上面,如果同學們比較反感編寫構造函數時候要編寫大量重復的代碼,可以嘗試下dataclass裝飾器.

這個裝飾器,不僅僅是簡寫代碼,直觀顯示數據類型,還可以進行數據比較,創建不可變屬性,使用post_init預處理變量等等好處.

如果想要更詳細了解這個新功能的細節,可以看下這篇文章--->https://linux.cn/article-9974-1.html

最后的留言

如果大家有什么疑問,可以在下方留言或者私信我,看到我會回復的(就是很難及時回復了).

如果我上面說的有什么錯誤,歡迎大家指正我(杠起來).

這是我的個人站點——一路香蕉皮,有興趣可以點擊查看下,里面有軟件,教程,圖片福利分享

總結

以上是生活随笔為你收集整理的python 实例变量_Python的类变量和实例变量详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。