python“靜態(tài)”變量、實(shí)例變量與本地變量的聲明示例
前言
雖然各種編程語言之間大部分語法存在共通的地方,但是在一些細(xì)節(jié)的處理上還是千差萬別
才接觸Python不久(之前是學(xué)Java的),實(shí)在想吐槽一下語言之間編碼格式上的不統(tǒng)一問題,比如Java用分號分隔代碼塊,Python用空格,這無形之中增加了編碼人員的學(xué)習(xí)成本
作為初學(xué)人員,還是老老實(shí)實(shí)記錄一下學(xué)習(xí)過程中的坑:)
1. “靜態(tài)”變量的聲明
這里的靜態(tài)變量是借用Java中靜態(tài)變量的概念(不知道Python中的具體概念是什么),指既可以通過類名直接進(jìn)行訪問,也可以通過類的實(shí)例進(jìn)行訪問的變量。這種變量的聲明很簡單,直接在類代碼塊中設(shè)置變量即可,不需要任何關(guān)鍵字
Java中這樣聲明的變量是實(shí)例變量,只能通過對象實(shí)例進(jìn)行訪問
class Test: # 這是一個(gè)“靜態(tài)”變量 className = "Test"
2. 實(shí)例變量的聲明
實(shí)例變量是指必須通過類的實(shí)例去訪問的變量
實(shí)例變量的聲明比較神奇,在任意的方法中,在變量名稱前面加上“self.”,該變量就變成了實(shí)例變量。這樣這個(gè)變量在其他的方法中也同樣可以使用了(個(gè)人感覺有點(diǎn)奇葩啊有木有)
所以實(shí)例變量的聲明有一點(diǎn)特別重要,如果該實(shí)例變量會(huì)做跨方法的使用,那么實(shí)例變量聲明的方法一定要在實(shí)例變量使用的方法調(diào)用之前執(zhí)行
def __init__(self): # 這是一個(gè)實(shí)例變量 self.hello = Hello()
3. 本地變量的聲明
本地變量是僅在類的方法中使用的變量
聲明方法也很簡單,直接在類的方法中定義變量即可
def who(self): # 這是一個(gè)本地變量 name = "Cain" return name
最后是一個(gè)完整的使用示例:
一個(gè)hello類:
class Hello: def who(self): # 這是一個(gè)本地變量 name = "Cain" return name
一個(gè)Test類(其中會(huì)用到hello類):
# -*- coding:UTF-8 -*-
from hello import Hello
class Test:
# 這是一個(gè)“靜態(tài)”變量
className = "Test"
def __init__(self):
# 這是一個(gè)實(shí)例變量
self.hello = Hello()
def sayName(self):
# 類的方法中訪問實(shí)例變量
print("My name is " + self.hello.who())
if __name__ == "__main__":
test = Test()
test.sayName()
test1 = Test()
# 通過類名直接訪問靜態(tài)變量
print(Test.className)
# 通過實(shí)例名訪問靜態(tài)變量
print(test.className)
# 通過實(shí)例名訪問實(shí)例變量
print(test.hello.who())
# 通過類名直接訪問實(shí)例變量會(huì)報(bào)錯(cuò)?。?!
# print(Test.hello.who())
總結(jié)
到此這篇關(guān)于python“靜態(tài)”變量、實(shí)例變量與本地變量聲明的文章就介紹到這了,更多相關(guān)python靜態(tài)變量、實(shí)例變量與本地變量聲明內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 在python代碼中加入環(huán)境變量的語句操作
- Python基礎(chǔ)知識(shí)之變量的詳解
- python3 刪除所有自定義變量的操作
- 完美處理python與anaconda環(huán)境變量的沖突問題
- Python全局變量global關(guān)鍵字詳解
- python子類如何繼承父類的實(shí)例變量
- Python中全局變量和局部變量的理解與區(qū)別
- 詳解python的變量緩存機(jī)制
- python安裝及變量名介紹詳解
- Python如何批量生成和調(diào)用變量
- python小技巧——將變量保存在本地及讀取
- Python判斷變量是否是None寫法代碼實(shí)例
- 淺談對Python變量的一些認(rèn)識(shí)理解
相關(guān)文章
詳解python數(shù)據(jù)結(jié)構(gòu)和算法
這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)和算法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
python爬蟲搭配起B(yǎng)ilibili唧唧的流程分析
這篇文章主要介紹了python爬蟲搭配起B(yǎng)ilibili唧唧的流程分析,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
PyCharm實(shí)現(xiàn)遠(yuǎn)程調(diào)試的全過程(附圖文講解)
這篇文章主要介紹了PyCharm實(shí)現(xiàn)遠(yuǎn)程調(diào)試的全過程,文中通過圖文結(jié)合的方式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-05-05
一文教會(huì)你用Python獲取網(wǎng)頁指定內(nèi)容
Python用做數(shù)據(jù)處理還是相當(dāng)不錯(cuò)的,如果你想要做爬蟲,Python是很好的選擇,它有很多已經(jīng)寫好的類包,只要調(diào)用即可完成很多復(fù)雜的功能,下面這篇文章主要給大家介紹了關(guān)于Python獲取網(wǎng)頁指定內(nèi)容的相關(guān)資料,需要的朋友可以參考下2022-03-03
Python抓取數(shù)據(jù)到可視化全流程的實(shí)現(xiàn)過程
這篇文章主要介紹了Python抓取數(shù)據(jù)到可視化全流程的實(shí)現(xiàn)過程,2022-01-01
Django學(xué)習(xí)筆記之ORM基礎(chǔ)教程
ORM,即Object-Relational Mapping(對象關(guān)系映射),它的作用是在關(guān)系型數(shù)據(jù)庫和業(yè)務(wù)實(shí)體對象之間作一個(gè)映射,下面這篇文章主要給大家介紹了關(guān)于Django學(xué)習(xí)筆記之ORM基礎(chǔ)教程的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2018-03-03

