一些關於Python Class和C++ Class 的不同點

寫在前面

本文將對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()

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