Python入門(七)之 類與對象

作者:PyQuant
博客https://blog.csdn.net/qq_33499889
慕課https://mooc1-2.chaoxing.com/course/207443619.html


點贊、關注再看,養成良好習慣
Life is short, U need Python
初學Python,快來點我吧
在這裏插入圖片描述



先來了解幾個基本概念:

  • 類(Class): 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。

  • 方法:類中定義的函數。

  • 類變量:類變量在整個實例化的對象中是公用的。類變量定義在類中且在函數體之外。

  • 數據成員:類變量或者實例變量用於處理類及其實例對象的相關數據。

  • 方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱爲方法的重寫。

  • 局部變量:定義在方法中的變量,只作用於當前實例的類。

  • 實例變量:在類的聲明中,屬性是用變量來表示的,這種變量就稱爲實例變量,實例變量就是一個用 self 修飾的變量。

  • 繼承:即一個派生類(derived class)繼承基類(base class)的字段和方法。繼承也允許把一個派生類的對象作爲一個基類對象對待。

  • 實例化:創建一個類的實例,類的具體對象。

  • 對象(Object):通過類定義的數據結構實例;包括兩個數據成員(類變量和實例變量)和方法。

1. 類的定義

在這裏插入圖片描述

class Person:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    
    def talk(self):
        print('{}說:我{}歲了'.format(self.name,self.age))
sample = Person('PyQuant',30)
sample.name
'PyQuant'
sample.talk()
PyQuant說:我30歲了

2. 類的私有化

sample.age = 20
sample.talk()
PyQuant說:我20歲了
class Person:
    def __init__(self,name,age):
        self.name = name
        self.__age = age
    
    def talk(self):
        print('{}說:我{}歲了'.format(self.name,self.__age))
sample_1 = Person('PyQuant',30)
sample_1.age
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-26-e9a316962dbb> in <module>()
----> 1 sample_1.age


AttributeError: 'Person' object has no attribute 'age'
sample_1.age = 20
sample_1.talk()
PyQuant說:我30歲了

3. 類的繼承

3.1 單繼承

# 父類
class People:
    # 初始化方法
    def __init__(self,name,age,weight):
        self.name = name
        self.age = age
        self.__weight = weight
    # 父類方法
    def speak(self):
        print("%s 說: 我 %d 歲。" %(self.name,self.age))

# 子類
class Student(people):
    # 初始化方法
    def __init__(self,name,age,weight,grade):
        people.__init__(self,name,age,weight)             # 繼承父類的屬性
        self.grade = grade
    # 覆寫父類方法
    def speak(self):
        print("%s 說: 我 %d 歲了,我在讀 %d 年級"%(self.name,self.age,self.grade))

# 實例化
s = Student('Quant',10,60,3)
s.speak()
Quant 說: 我 10 歲了,我在讀 3 年級

3.2 多繼承

class Student:
    # 初始化方法
    def __init__(self,name,age,grade):
        self.name = name
        self.age = age
        self.grade = grade
    # 父類1方法
    def speak(self):
        print("%s 說: 我 %d 歲,我在讀 %d 年級。" %(self.name,self.age,self.grade))
    
# 父類2
class Speaker():
    # 初始化方法
    def __init__(self,name,topic):
        self.name = name
        self.topic = topic
    # 父類2方法
    def speak(self):
        print("我叫 %s,我是一個大數據分析師,我的分析工具是 %s"%(self.name,self.topic))

# 多重繼承1
class Sample(Speaker,Student):       # 注意繼承順序:從左到右繼承
    # 初始化方法
    def __init__(self,name,age,grade,topic):
        Student.__init__(self,name,age,grade)   # 繼承父類1的屬性
        Speaker.__init__(self,name,topic)      # 繼承父類2的屬性

# 實例化
test = Sample("Quant",25,4,"Python")
test.speak()                         # 注意繼承順序:從左到右繼承
我叫 Quant,我是一個大數據分析師,我的分析工具是 Python
class Student:
    
    def __init__(self,name,age,grade):
        self.name = name
        self.age = age
        self.grade = grade
    
    def speak(self):
        print("%s 說: 我 %d 歲,我在讀 %d 年級。" %(self.name,self.age,self.grade))
    

class Speaker():
    
    def __init__(self,name,topic):
        self.name = name
        self.topic = topic
    
    def speak(self):
        print("我叫 %s,我是一個大數據分析師,我的分析工具是 %s"%(self.name,self.topic))


class Sample(Student, Speaker):       
   
    def __init__(self,name,age,grade,topic):
        Student.__init__(self,name,age,grade)   
        Speaker.__init__(self,name,topic)      

test = Sample("Quant",25,4,"Python")
test.speak()                         
Quant 說: 我 25 歲,我在讀 4 年級。

3.3 super()函數

class People:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    
    def speak(self):
        print("%s 說: 我 %d 歲。" %(self.name,self.age))

        
class Student(People):
    def __init__(self,name,age,grade):
        super().__init__(name,age)             # 繼承父類的屬性(注意:不帶self)
        self.grade = grade
    
    def speak(self):
        print("%s 說: 我 %d 歲了,我在讀 %d 年級"%(self.name,self.age,self.grade))

s = Student('Quant',10,3)
s.speak()
Quant 說: 我 10 歲了,我在讀 3 年級

  • 寫作不易,切勿白剽
  • 博友們的點贊關注就是對博主堅持寫作的最大鼓勵
  • 持續更新,未完待續…

上一篇Python入門(六)之 Python “三大器”
下一篇:Python入門(八)之 Python 異常處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章