寫在前面
本文將對Python Class的用法進行講解,且重點將體現Python Class 與C++ Class不同的地方。
類的定義
和C++類似,Python採用了Class xxx的定義方式,不過首字母需要大寫(採用大駝峯命名法命名)
class PeopleBase:
print("test")
gender = ""
def __init__(self, name, no):
self.name = name
self.no = no
def print(self):
self.out = "already out"
print("name = ", self.name)
print("no = ", self.no)
與c++相比,它有一些不同的地方
構造函數
在c++中,構造函數的樣式爲 \(ClassName(argv1,argv2)\)
但在Python中,構造函數的形態爲\(\_\_init\_\_(self, argv1, argv2……)\)
對於一個類,只能有一個init,且init中的第一個參數必須爲self
變量定義
在c++中,變量定義需要在class中進行,不可以在成員函數中進行
但是在python中,既可以直接定義(如上文的gender),也可以在函數中定義(如init中,或者是print中),甚至還可以在執行的過程中,直接進行定義
創建實例對象
由於Python的變量類型是基於所賦的值的類型
因此我們要先定義出一個類型爲ClassName的類型,再進行賦值
比如下面的代碼
a = PeopleBase("Alice", 123)
訪問屬性
和c++一樣的訪問邏輯
不過,我們可以通過訪問屬性,給類添加屬性
a = PeopleBase("Alice", 123)
a.age = 12
a.print()
print(a.age)
類的繼承
和c++一樣,Python Class支持類繼承
類繼承的語法是這樣的:
class Student(PeopleBase):
grade = ""
def __init__(self, grade, name, no):
self.grade = grade
super(Student, self).__init__(name, no)
def print(self):
print("grade = ", self.grade)
super(Student,self).print()
其中,定義語句爲
class Student(PeopleBase):
PeopleBase爲基類,Student爲派生類
在派生類中調用其基類的方法爲super(BaseClassName,self).func()