免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
python的類和對象

1、類的繼承(直接在類名后面括號里面寫入要繼承的類名

  

  

注:如果子類中定義與父類同名的方法或?qū)傩?,則會自動覆蓋父類對應的方法或?qū)傩浴?/p>

  

解決上述問題的方法:

  a、調(diào)用未綁定的父類方法

    

  b、使用super函數(shù)(優(yōu)點是不用給出任何基類的名字,python會自動一層層找到基類中對應的方法)

  多重繼承(容易代碼混亂,應盡量避免使用

    

  

  出現(xiàn)上述情況的時候,使用繼承和多重繼承都不合適,于是使用組合:

    

  類、類對象和實例對象

    

  類中的方法名與屬性名重名時,類將被屬性覆蓋:

    

  綁定:python嚴格要求方法需要有實例才能被調(diào)用,這種限制其實就是python所謂的綁定概念。

  1、issubclass(class, classinfo)

    a、一個類被認為是其自身的子類

    b、classinfo可以是類對象組成的元組,只要class與其中任何一個候選子   類,則返回True

  2、isinstance(object,classinfo)

    a、如果第一個參數(shù)不是對象,則永遠返回False

    b、如果第二個參數(shù)不是類或者由類對象組成的元組,會拋出一個TypeError  異常。

  3、hasattr(object,name):測試一個對象是否有指定的屬性

  4、getattr(object, name[, default]):返回對象指定的屬性值

  5、setattr(object,name,value):設置指定屬性的值

  6、delattr(object,name):刪除對象中指定的屬性,如果屬性不存在拋出  異常。

2、多態(tài)(不同的對象對同一類方法的不同響應

3、self(對象的方法中會傳遞一個self參數(shù)

  由一個類可以生成多個對象,對象之間都極為相似,來源于同一個類,不同的對象調(diào)用方法時傳遞self參數(shù)告訴python當前是哪個對象調(diào)用方法了。

  

4、python的魔法方法(總是被雙下劃線包圍)

  1、__init__(self, param1, param2, ...):類似于java中的構造方法

  ps:init方法不能有返回值

  2、__new__(cls[,...]):對象實例化時調(diào)用的方法,返回一個類對象

    

  3、__del__(self):當對象被銷毀的時候(垃圾回收機制)自動調(diào)用

5、python定義私有屬性或方法

  在python中定義私有的變量只需要在變量名或函數(shù)名前面加上"__"兩個下劃線,那么這個函數(shù)或變量就會變成私有的了。

  

ps:python將雙下劃線開頭的名字進行了改編,改成"_類名_屬性名/方法名"

  

6、property方法

  

 

7、描述符(property的原理)

  描述符:就是將某種特殊類型的類的實例指派給另一個類的屬性。

  特殊類是指至少實現(xiàn)以下三個方法中的一個方法的類:

    a、__get__(self, instance, owner):用于訪問屬性,它返回屬性的值

    b、__set__(self, instance, value):將在屬性分配操作中調(diào)用,不返回任何內(nèi)容

    c、__delete__(self, instance):控制刪除操作,不返回任何內(nèi)容

    

 

  自己實現(xiàn)一個property類,完成描述符的功能:

#特殊的類要實現(xiàn)__get__、__set__、__delete__三個方法
class MyProperty:
  def __init__(self, fget=None, fset=None, fdel=None):
    self.fget = fget
    self.fset = fset
    self.fdel = fdel
  def __get__(self, instance, owner):
    return self.fget(instance)
  def __set__(self, instance, value):
    self.fset(instance, value)
  def __delete__(self, instance):
    self.fdel(instance)

class C:
  def __init__(self):
    self._x = None
  def getX(self):
    return self._x
  def setX(self, value):
    self._x = value
  def delX(self):
    del self._x
x = MyProperty(getX, setX, delX)
c = C()
c.x = 10
print(c.x)
print(c._x)

 

  應用舉例:

    

 

#定義攝氏度類
class Cal:
def __init__(self, value=26.0):
self.temp = float(value)
def __get__(self, instance, owner):
return self.temp
def __set__(self, instance, value):
self.temp = float(value)
def __delete__(self, instance):
del self.temp
#定義華氏度類
class Has:
def __get__(self, instance, owner):
return instance.cal * 1.8 + 32
def __set__(self, instance, value):
instance.cal = (float(value)-32)/1.8
#定義溫度類
class Temp:
cal = Cal() #實例化攝氏度類
has = Has() #實例化華氏度類

temp1 = Temp()
print(temp1.cal)
print(temp1.has)
temp1.has = 100
print(temp1.cal)

 

8、對象的屬性訪問

  a、__getattr__(self, name):定義當一個用戶試圖獲取一個不存在的屬性時的行為

  b、__getattribute__(self, name):定義當該類的屬性被訪問時的行為

  c、__setattr__(self, name, value):定義當一個屬性被設置時的行為

  d、__delattr__(self, name):定義當一個屬性被刪除時的行為

  

9、注意魔法方法的死循環(huán)

  

  屬性賦值時,默認自動調(diào)用__setattr__方法

  

  解決方法:

    a、調(diào)用基類的setattr方法(優(yōu)選)

      

      class Rectangle:
        def __init__(self, width=0, height=0):
          self.width = width #矩形的長
          self.height = height #矩形的寬
        def __setattr__(self, name, value):
          if name == "square":
            self.width = value
            self.height = value
          else:
            super().__setattr__(name, value)
        def getArea(self): #獲得矩形的面積
          return self.width * self.height
      r = Rectangle(4, 5)
      print(r.getArea())
      r.square = 10
      print(r.width)
      print(r.height)
      print(r.getArea())

    b、使用對象的特殊屬性dict進行賦值

      

 


本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python 魔術方法指南 — PyCoder's Weelky CN
11. (譯)Python魔法方法指南
Python的hasattr() getattr() setattr() 函數(shù)使用方法詳解
【Python】 如何動態(tài)添加類屬性與方法
day22總結
很多書上都不告訴你,Python類中3個方法的秘密
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服