欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python面向對象程序設計之靜態(tài)方法、類方法、屬性方法原理與用法分析

 更新時間:2020年03月23日 10:50:24   作者:隨風行云  
這篇文章主要介紹了Python面向對象程序設計之靜態(tài)方法、類方法、屬性方法,結合實例形式分析了Python靜態(tài)方法、類方法、屬性方法相關概念、原理、用法及相關操作注意事項,需要的朋友可以參考下

本文實例講述了Python面向對象程序設計之靜態(tài)方法、類方法、屬性方法原理與用法。分享給大家供大家參考,具體如下:

前言:認為方法與函數(shù)同意義,由于這里使用method,所以稱為方法


靜態(tài)方法:

  • 使用@staticmethod來定義靜態(tài)方法。
  • 靜態(tài)方法:類和實例都可以調用的方法,實際上跟類沒什么關系了,對于這種不太相關的就使用靜態(tài)方法【用實例和類調用沒有區(qū)別】
class Dog(object):
  def __init__(self,name):
    self.name=name
  def talk(self):
    print("%s is talking"%self.name)
  @staticmethod
  def eat(self,food):##
    print("%s is eating %s"%(self.name,food))

  @staticmethod
  def bulk(): ##如果不涉及實例變量的內容,可以不傳self
    print("wang wang!")

d=Dog("haha")
d.talk()
Dog.eat(d,"baozi")
d.eat(d,"mianbao")
d.bulk()
Dog.bulk()

注:由于不太相關,所以不會自動傳self,如果操作涉及對象的內容,需要手動傳入

image


類方法:

  • 使用@classmethod來定義類方法
  • 類方法只能訪問類變量,不能訪問實例變量
  • 如果涉及類變量比較多,而涉及實例變量比較少的話,使用類方法
class Dog(object):
  name="haha"
  def __init__(self,name):
    self.name=name

  @classmethod
  def eat(self):
    print(self)# <class '__main__.Dog'> 說明self是一個類
    print("%s is eating "%self.name)#所以只會調用類中的name

d=Dog("aotuman")
d.eat()##haha is eating
Dog.eat()##haha is eating
d2=Dog("huluwa")
d2.eat()

注:類方法中的self是一個類,因此才會只訪問類變量


屬性方法:

  • @property會把一個方法變成一個屬性
  • 為什么會有屬性方法

現(xiàn)有需求:我輸入因數(shù),你就會打印出我要的計算結果

用變量來實現(xiàn):

image

缺點:無法約束賦值,假如我要限制不能輸入非數(shù)字【實際上,如果要做這樣的約束,就要建立一個函數(shù),這實際上與屬性方法相同,而如果在my_sum里面檢測的話,就比建立一個函數(shù)還要麻煩了】

用屬性方法來實現(xiàn):

image

  • 代碼:

解釋:

  • @property用于獲??;@setter用于賦值傳參;@deleter用于刪除屬性,并不影響其他與當前@property無關的函數(shù)
  • 要想他們三個關聯(lián)起來,函數(shù)名必須相同,且前綴是@property修飾的函數(shù)的名

image

class calc:
  @property
  def my_sum(self):
    print(self.one+self.two)
  @my_sum.setter
  def my_sum(self,l):
    if isinstance(l[0],int)&isinstance(l[1],int):
      self.one=l[0]
      self.two=l[1]
    else:
      print("no int")
  @my_sum.deleter
  def my_sum(self):
    print("del done")
    del self.one,self.two
c=calc()
c.my_sum=[1,2]
c.my_sum
del c.my_sum

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python面向對象程序設計入門與進階教程》、《Python數(shù)據(jù)結構與算法教程》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》及《Python入門與進階經(jīng)典教程

希望本文所述對大家Python程序設計有所幫助。

相關文章

最新評論