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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

类的实例方法静态方法类方法属性方法属性

發(fā)布時(shí)間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 类的实例方法静态方法类方法属性方法属性 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄:

  • 分類
  • 實(shí)例方法
  • 靜態(tài)方法
  • 類方法
  • 屬性方法
  • 屬性

分類:

按照調(diào)用方式可以分為3種,實(shí)例方法、靜態(tài)方法、和類方法

實(shí)例方法

實(shí)例方法只能通過實(shí)例對(duì)象調(diào)用,不能通過類進(jìn)行調(diào)用。實(shí)例方法再定義時(shí)候使用關(guān)鍵字self,self代表實(shí)例對(duì)象本身。

class A():x=100def fun(self,y):self.x+=y a=A() a.fun(10) print(a.x) A.fun(10)*****結(jié)果****** 110 Traceback (most recent call last): #類調(diào)用錯(cuò)誤File "/home/34f17b632da0cc986bc0f291c0518783.py", line 8, in <module>A.fun(10) TypeError: fun() missing 1 required positional argument: 'y'

靜態(tài)方法

靜態(tài)方法可以使用實(shí)例對(duì)象調(diào)用,也可以使用類進(jìn)行調(diào)用,他的的特點(diǎn)沒有參數(shù)限制,定義時(shí)需要在函數(shù)前加@staticmethod

  • 作用:靜態(tài)方法可以更好的組織代碼,防止代碼變大后變得比較混亂。

  • 特性: 靜態(tài)方法只是名義上歸類管理,實(shí)際上在靜態(tài)方法里訪問不了類或則實(shí)例中的任何屬性

  • 靜態(tài)方法使用場(chǎng)景:

    • 我們要寫一個(gè)只在類中運(yùn)行而不在實(shí)例中運(yùn)行的方法.
    • 經(jīng)常有一些跟類有關(guān)系的功能但在運(yùn)行時(shí)又不需要實(shí)例和類參與的情況下需要用到靜態(tài)方法
    • 比如更改環(huán)境變量或者修改其他類的屬性等能用到靜態(tài)方法
    • 這種情況可以直接用函數(shù)解決, 但這樣同樣會(huì)擴(kuò)散類內(nèi)部的代碼,造成維護(hù)困難
  • 調(diào)用方式: 既可以被類直接調(diào)用,也可以通過實(shí)例調(diào)用
  • @staticmethod靜態(tài)方法

    class Dog(object):def __init__(self,name):self.name = name@staticmethoddef eat():print("I am a static method") d = Dog("ChenRonghua") d.eat() #方法1:使用實(shí)例調(diào)用 Dog.eat() #方法2:使用類直接調(diào)用

    類方法

    可以被類調(diào)用,也可以被實(shí)例對(duì)象調(diào)用,實(shí)例調(diào)用可以給類增加屬性,類的屬性修改需要通過類進(jìn)行修改,類方法需要使用關(guān)鍵字cls,定義時(shí)候需要在函數(shù)前加@classmethod

  • 作用:無需實(shí)例化直接被類調(diào)用
  • 特性: 類方法只能訪問類變量,不能訪問實(shí)例變量
  • 類方法使用場(chǎng)景: 當(dāng)我們還未創(chuàng)建實(shí)例,但是需要調(diào)用類中的方法
  • 調(diào)用方式: 既可以被類直接調(diào)用,也可以通過實(shí)例調(diào)
  • @classmethod類方法

    class Dog(object):name = '類變量' #在這里如果不定義類變量?jī)H定義實(shí)例變量依然報(bào)錯(cuò)def __init__(self,name):self.name = '實(shí)例變量'self.name = name@classmethoddef eat(self,food):print("%s is eating %s"%(self.name,food)) Dog.eat('baozi') #方法1:使用類直接調(diào)用 d = Dog("ChenRonghua") d.eat("包子") #方法2:使用實(shí)例d調(diào)用

    屬性方法

    屬性方法的作用:

    作用:屬性方法把一個(gè)方法變成一個(gè)屬性,隱藏了實(shí)現(xiàn)細(xì)節(jié),調(diào)用時(shí)不必加括號(hào)直接d.eat即可調(diào)用self.eat()方法

    @property屬性方法

    class Dog(object):def __init__(self, name):self.name = name@propertydef eat(self):print(" %s is eating" % self.name) d = Dog("旺旺") d.eat() # 調(diào)用會(huì)出以下錯(cuò)誤, 說NoneType is not callable, 因?yàn)閑at此時(shí)已經(jīng)變成一個(gè)靜態(tài)屬性了, # 不是方法了, 想調(diào)用已經(jīng)不需要加()號(hào)了,直接d.eat就可以了

    屬性

    1.類的公有屬性
    public_attrs:能在類的外部被使用或直接訪問。在類內(nèi)部的方法中使用時(shí) public_attrs_attrs,在類的外部class_name.public_attrs。

    2.類的私有屬性
    __private_attrs:兩個(gè)下劃線開頭,聲明該屬性為私有,不能在類的外部被使用或直接訪問。在類內(nèi)部的方法中使用時(shí) self.__private_attrs。

    3.類的(公有)方法
    在類的內(nèi)部,使用 def 關(guān)鍵字來定義一個(gè)方法,與一般函數(shù)定義不同,類方法必須包含參數(shù) self,且為第一個(gè)參數(shù),self 代表的是類的實(shí)例。
    self 的名字并不是規(guī)定死的,也可以使用 this,但是最好還是按照約定是用 self。

    公有屬性,普通屬性,私有屬性 比較

    1. 公有屬性:在內(nèi)存中僅存一份

    2. 普通屬性:每個(gè)實(shí)例對(duì)象在內(nèi)存存一份

    3. 私有屬性:實(shí)例在外部無法調(diào)用

    4.類的私有方法
    __private_method:兩個(gè)下劃線開頭,聲明該方法為私有方法,只能在類的內(nèi)部調(diào)用 ,不能在類的外部調(diào)用。self.__private_methods。

    • 默認(rèn)情況下,程序可以從外部訪問一個(gè)對(duì)象的特性
    • 為了讓方法和特性變成私有(從外部無法訪問),只要在它的名字前加上雙下劃線即可
    • 先在__inaccessible從外界是無法訪問的,而在內(nèi)部還能使用(比如從accessible訪問)

    類中函數(shù)私有化

    class Secretive:def __accessible(self):print("you can't see me,unless you're calling internally")def accessible(self):print("The secret message is:")self.__accessible() s = Secretive() s.accessible()# 運(yùn)行結(jié)果: # The secret message is: # you can't see me,unless you're calling internally

    總結(jié)

    以上是生活随笔為你收集整理的类的实例方法静态方法类方法属性方法属性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。