作者: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 異常處理