中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

面向對象進階

發布時間:2020-07-20 02:52:40 來源:網絡 閱讀:259 作者:mb5d40259989ce8 欄目:編程語言

面向對象進階

類(Class): 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。
類變量:類變量在整個實例化的對象中是公用的。類變量定義在類中且在函數體之外。類變量通常不作為實例變量使用。
數據成員:類變量或者實例變量, 用于處理類及其實例對象的相關的數據。
方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。
局部變量:定義在方法中的變量,只作用于當前實例的類。
實例變量:在類的聲明中,屬性是用變量來表示的。這種變量就稱為實例變量,是在類聲明的內部但是在類的其他成員方法之外聲明的。
繼承:即一個派生類(derived class)繼承基類(base class)的字段和方法。繼承也允許把一個派生類的對象作為一個基類對象對待。例如,有這樣一個設計:一個Dog類型的對象派生自Animal類,這是模擬"是一個(is-a)"關系(例圖,Dog是一個Animal)。
實例化:創建一個類的實例,類的具體對象。
方法:類中定義的函數。
*對象:通過類定義的數據結構實例。對象包括兩個數據成員(類變量和實例變量)和方法。
在前面的章節我們已經了解了面向對象的入門知識,知道了如何定義類,如何創建對象以及如何給對象發消息。為了能夠更好的使用面向對象編程思想進行程序開發,我們還需要對Python中的面向對象編程進行更為深入的了解。

時間打印
import time
time.sleep()

降序
a.sort(reverse=True)
end=' ' 變為一行

面向對象進階

一.@property裝飾器

之前我們討論過Python中屬性和方法訪問權限的問題,雖然我們不建議將屬性設置為私有的,但是如果直接將屬性暴露給外界也是有問題的,比如我們沒有辦法檢查賦給屬性的值是否有效。我們之前的建議是將屬性命名以單下劃線開頭,通過這種方式來暗示屬性是受保護的,不建議外界直接訪問,那么如果想訪問屬性可以通過屬性的getter(訪問器)和setter(修改器)方法進行對應的操作。如果要做到這點,就可以考慮使用@property包裝器來包裝getter和setter方法,使得對屬性的訪問既安全又方便,代碼如下所示。
使用裝飾器的時候,需要注意:
**1. 裝飾器名,函數名需要一致.

  1. property需要先聲明,再寫setter,順序不能倒過來
  2. 如果你希望一點變量只是被訪問不能被修改,那么可以使用訪問器@property
  3. 如果要修改訪問器中的變量,可以搭建一個修改器,或者刪除訪問器.
class Person(object):
      def __init__(self, name, age):
          self._name = name
          self._age = age

    # 訪問器 - getter方法
    @property
    def name(self):
        return self._name

    # 訪問器 - getter方法
    @property
    def age(self):
        return self._age

    # 修改器 - setter方法
    @age.setter
    def age(self, age):
        self._age = age

    def play(self):
        if self._age <= 16:
            print('%s正在玩飛行棋.' % self._name)
        else:
            print('%s正在玩斗地主.' % self._name)
   def main():
       person = Person('王大錘', 12)
       person.play()
       person.age = 22
       person.play()

    # person.name = '白元芳'  # AttributeError: can't set attribute

if __name__ == '__main__':
    main()

二.python中類是動態的

class Num(object):
    def __init__(self):
        self.a = 1000

    def A(self):
        print(self.b)

num = Num()
num.b =1000000
#print(num.a)
print(num.b)
num.A()

三.slots魔法

我們講到這里,不知道大家是否已經意識到,Python是一門[動態語言]。通常,動態語言允許我們在程序運行時給對象綁定新的屬性或方法,當然也可以對已經綁定的屬性和方法進行解綁定。但是如果我們需要限定自定義類型的對象只能綁定某些屬性,可以通過在類中定義slots變量來進行限定。需要注意的是slots的限定只對當前類的對象生效,對子類并不起任何作用。


class Person(object):

    # 限定Person對象只能綁定_name, _age和_gender屬性
    __slots__ = ('_name', '_age', '_gender')

    def __init__(self, name, age):
        self._name = name
        self._age = age

    @property
    def name(self):
        return self._name

    @property
    def age(self):
        return self._age

    @age.setter
    def age(self, age):
        self._age = age

    def play(self):
        if self._age <= 16:
            print('%s正在玩飛行棋.' % self._name)
        else:
            print('%s正在玩斗地主.' % self._name)

def main():
    person = Person('王大錘', 22)
    person.play()
    person._gender = '男'
    #AttributeError: 'Person' object has no attribute '_is_gay'
    #person._is_gay = True

私有:
class Name(object):
def init(self,a,b):
self.a=a
self.b=b
面向對象進階

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邓州市| 平安县| 潜山县| 达日县| 岳普湖县| 弥勒县| 新丰县| 衡阳县| 大安市| 且末县| 广昌县| 乌鲁木齐县| 曲麻莱县| 泸定县| 北安市| 西宁市| 漳浦县| 黔西县| 宁安市| 新建县| 修水县| 英山县| 三台县| 石屏县| 乐山市| 德庆县| 大竹县| 陆河县| 无棣县| 土默特左旗| 怀宁县| 二手房| 清涧县| 连江县| 延寿县| 温宿县| 英德市| 洛浦县| 穆棱市| 沙洋县| 东丽区|