溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何在Python中使用設(shè)計(jì)類(lèi)變量與成員變量

發(fā)布時(shí)間:2021-05-26 10:00:55 來(lái)源:億速云 閱讀:146 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

本篇文章給大家分享的是有關(guān)如何在Python中使用設(shè)計(jì)類(lèi)變量與成員變量,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

類(lèi)變量與成員變量

在類(lèi)中聲明的變量我們稱(chēng)之為類(lèi)變量[靜態(tài)成員變量],

init()函數(shù)中聲明的變量并且綁定在實(shí)例上的變量我們稱(chēng)之為成員變量。

類(lèi)變量直接可以通過(guò)類(lèi)名來(lái)調(diào)用。

1、若類(lèi)變量與成員同時(shí)存在并且同名

使用對(duì)象來(lái)調(diào)用的時(shí)候,獲取的結(jié)果是成員變量的值,

使用類(lèi)名來(lái)調(diào)用,獲取的是類(lèi)變量的值。

2、若類(lèi)變量存在,成員變量不存在,

使用對(duì)象來(lái)調(diào)用的時(shí)候,它首先尋找成員變量,

如果成員變量不存在。則去尋找類(lèi)變量。

3、若類(lèi)變量不存在,成員變量存在:

使用類(lèi)名來(lái)調(diào)用,則會(huì)報(bào)錯(cuò)

總結(jié):

類(lèi)變量通過(guò)類(lèi)名或者對(duì)象來(lái)調(diào)用都不會(huì)報(bào)錯(cuò),但是成員變量只能通過(guò)對(duì)象來(lái)調(diào)用。

通過(guò)對(duì)象來(lái)修改類(lèi)屬性的時(shí)候,只能作用到對(duì)象自己本身,作用不到類(lèi),

若是通過(guò)類(lèi)名來(lái)修改類(lèi)屬性,則只對(duì)類(lèi)變量的值進(jìn)行修改。

class Person(object):
  # 類(lèi)變量
  name = "haha"
  age = "19"
  height = 170
  def __init__(self,name,age,weight):
    # 成員變量
    self.name = name
    self.age = age
    self.weight = weight
  def sayHeight(self):
    print(self.height)
per = Person("xiaoming",19,50)
print(per.name)
print(Person.name)
# print(Person.weight)
per.height = 190
print(per.height)
print(Person.height)
print('*********')
Person.height = 200
print(Person.height)
print(per.height)
per.sayHeight()

輸出:

xiaoming
haha
190
170
*********
200
190
190

類(lèi)方法與成員方法

類(lèi)方法,成員方法

類(lèi)方法:使用類(lèi)名來(lái)調(diào)用的方法

成員方法:使用對(duì)象來(lái)調(diào)用的方法

若一個(gè)方法定義在類(lèi)中,但是沒(méi)有參數(shù)[一般默認(rèn)self],此時(shí)我們只能通過(guò)類(lèi)名來(lái)調(diào)用

若我們需要使用到一個(gè)類(lèi)的對(duì)象,首先要實(shí)例化。

class Person(object):
  def __init__(self,name,age):
    self.name = name
    self.age = age
  def say(self):
    print("I am %s, I am %d year old"%(self.name,self.age))
  def sayHello():
    print('hello I am class function')
per = Person("xiaoming",19)
per.say()
Person.sayHello()

輸出:

I am xiaoming, I am 19 year old
hello I am class function

類(lèi)方法與靜態(tài)方法

靜態(tài)方法

當(dāng)調(diào)用此方法時(shí),不會(huì)將類(lèi)的實(shí)例傳遞給它。

在類(lèi)中定義的函數(shù)。

無(wú)需實(shí)例化類(lèi),就可以調(diào)用。它的定義在繼承中,是不可變的。

類(lèi)方法:

當(dāng)調(diào)用此方法時(shí),將函數(shù)所屬的類(lèi)作為第一個(gè)參數(shù)傳遞。

class A(object):
    def foo(self, x):
      print("executing foo(%s, %s)" % (self, x))
    @classmethod
    def class_foo(cls, x):
      print("executing class_foo(%s, %s)" % (cls, x))
    @staticmethod
    def static_foo(x):
      print("executing static_foo(%s)" % x)
  a = A()
  # 調(diào)用foo函數(shù),參數(shù)傳入1
  a.foo(1)
  # 調(diào)用class_foo,參數(shù)傳入1
  A.class_foo(1)
  # 調(diào)用static_foo,參數(shù)傳入1
  A.static_foo(1)
  a.static_foo(1):

輸出:

executing foo(<__main__.A object at 0x0000024F126489B0>, 1)
executing class_foo(<class '__main__.A'>, 1)
executing static_foo(1)
executing static_foo(1)

下劃線

下劃線定義特殊的方法,一般情況下是系統(tǒng)定義名字,
如:

__init()__、__del()__

前雙下劃線(age):表示私有類(lèi)型的變量(privated),只能在本類(lèi)中進(jìn)行訪問(wèn),外界不能直接訪問(wèn)。如__age.

單下劃線(_age):以單下劃線開(kāi)頭的表示保護(hù)類(lèi)型變量(protected),

保護(hù)類(lèi)型的變量只允許本身以及子類(lèi)訪問(wèn),不能用于from module import *

[使用單下劃線開(kāi)頭的時(shí)候,雖然變量能夠直接被訪問(wèn),但是請(qǐng)把變量視為一個(gè)保護(hù)類(lèi)型的變量,盡量不要去訪問(wèn)。

python是什么意思

Python是一種跨平臺(tái)的、具有解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮哪_本語(yǔ)言,其最初的設(shè)計(jì)是用于編寫(xiě)自動(dòng)化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開(kāi)發(fā)獨(dú)立的項(xiàng)目和大型項(xiàng)目。

以上就是如何在Python中使用設(shè)計(jì)類(lèi)變量與成員變量,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI