首頁 後端開發 Python教學 詳解python類別實例分析

詳解python類別實例分析

Mar 26, 2017 am 10:04 AM

這篇文章主要介紹了python 類別詳解及實例的相關資料,需要的朋友可以參考下

python 類別詳解

#類別

1.類別是一種資料結構,可用來建立實例。 (一般情況下,類別封裝了資料和可用於該資料的方法)

2.Python類別是可呼叫的物件,即類別物件

##3.類別通常在模組的頂層進行定義,以便類別實例能夠在類別所定義的原始程式碼檔案中的任何地方被創建。

4.實例初始化

  1. instance =

    ClassName(args....)

  2. 類別在實例化時可以使用init和del兩個特殊的方法。

  3.  class ClassName(base):
    'class documentation string' #类文档字符串
     class suite        #类体
    登入後複製
  1. base:超類別是一個或多個用於

    繼承的父類別集合

  2. 類別體可以包含:宣告語句、類別成員定義、資料

    屬性、方法

  3. #如果類別不存在繼承關係,就不提供括號裡的base

  4.  class FirstClass():
      spam = 30    #类数据属性
      def display(self): #类方法
       print self.spam
     x = FirstClass()   #创建类实例
     x.display()     #方法调用
     >>> 30
     dir(FirstClass)
     >>> ['doc', 'module', 'display', 'spam']
    登入後複製
  • class語句類似def,是可執行程式碼;直到執行class語句後,類別才會建立

  • class語句內,任何賦值語句都會建立類別屬性

  • 每個實例物件都會繼承類別的屬性並取得自己的名稱空間

Python類別方法及呼叫

實例(物件)所包含的屬性

  • 可呼叫的屬性:方法

  • 資料屬性

在OOP中,實例就像是帶有「資料」的記錄,而類別是處理這些記錄的“程式”

  • 透過實例呼叫方法相當於呼叫所屬類別的方法來處理目前實例。 例如之前的程式碼例子,x.display() 會被自動轉換為FirstClass.display(x),也就是呼叫類別的方法來處理實例x

  • 因此,類別中每個方法必須有self參數,它隱含目前實例之意

  • 在方法內對self屬性做賦值運算會產生每個實例自己的屬性

  • Python規定,沒有實例,方法不允許被調用,這是'綁定'(binding)的概念

  • class語句中的賦值語句會創建類別屬性,如前面範例的spam

  • 在類別方法中對傳給方法的特殊參數self進行賦值會建立實例屬性

##Python建構器

建立實例時,Python會自動呼叫類別中的init方法,以隱形的為實例提供屬性

    init方法稱為建構器
  1. 如果類別中沒有定義init方法,實例建立之初只是一個簡單的名稱空間。
  2. init的第一個參數一定是self ,self
  3. 變數

    用於在類別實例方法中引用方法所綁定的實例。因為方法的實例在任何方法呼叫中總是作為第一個參數傳遞的,self 被選中用來代表實例。你必須在方法宣告中放上 self,但可以在方法中不使用實例(self)。如果你的方法中沒有用到 self , 那麼請考慮創建一個常規函數,除非你有特別的原因。畢竟,你的方法程式碼沒有使用實例,沒有與類別關聯其功能,這使得它看起來更像一個常規函數。在其它物件導向語言中,self 可能被稱為 this。

    init不能回傳任何物件
  • 析構函數

    :del

  • 建構子

    是必要的,而析構函式常常可以不考慮(Python解釋器會自己回收)

class MyClass():
 def init(self, name):
  self.name = name
  print 'My name is ' + self.name
 def del(self):
  print self.name + ' is dead.'
i1 = MyClass('Shaw')
>>> My name is Shaw
del i1
>>> Shaw id dead.
登入後複製

类的特殊属性

  • 使用dir()或dict,查看类或实例的属性

  • doc:获取文档字符串

  • base:获取所有父类

  • module:类所在的模块

  • name:实例所属类的名字

Python类方法中可用的变量

  • 实例变量:self.变量名

  • 局部变量:方法内部创建的变量,可直接使用

  • 静态变量:类中定义的变量。类名.变量名

  • 全局变量:直接使用

继承

继承描述了基类的属性如何‘遗传'给派生类

  1. 子类可以继承他的基类的任何属性,包括数据属性和方法

  2. 一个未指定基类的类,其默认有一个叫object的基类

  3. Python允许多重继承(可以继承多个父类)

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上是詳解python類別實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何解決Linux終端中查看Python版本時遇到的權限問題? 如何解決Linux終端中查看Python版本時遇到的權限問題? Apr 01, 2025 pm 05:09 PM

Linux終端中查看Python版本時遇到權限問題的解決方法當你在Linux終端中嘗試查看Python的版本時,輸入python...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到? 如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到? Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

在Python中如何高效地將一個DataFrame的整列複製到另一個結構不同的DataFrame中? 在Python中如何高效地將一個DataFrame的整列複製到另一個結構不同的DataFrame中? Apr 01, 2025 pm 11:15 PM

在使用Python的pandas庫時,如何在兩個結構不同的DataFrame之間進行整列複製是一個常見的問題。假設我們有兩個Dat...

Uvicorn是如何在沒有serve_forever()的情況下持續監聽HTTP請求的? Uvicorn是如何在沒有serve_forever()的情況下持續監聽HTTP請求的? Apr 01, 2025 pm 10:51 PM

Uvicorn是如何持續監聽HTTP請求的? Uvicorn是一個基於ASGI的輕量級Web服務器,其核心功能之一便是監聽HTTP請求並進�...

在Linux終端中使用python --version命令時如何解決權限問題? 在Linux終端中使用python --version命令時如何解決權限問題? Apr 02, 2025 am 06:36 AM

Linux終端中使用python...

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎? 如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎? Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何繞過Investing.com的反爬蟲機制獲取新聞數據? 如何繞過Investing.com的反爬蟲機制獲取新聞數據? Apr 02, 2025 am 07:03 AM

攻克Investing.com的反爬蟲策略許多人嘗試爬取Investing.com(https://cn.investing.com/news/latest-news)的新聞數據時,常常�...

See all articles