1. 程式人生 > 其它 >基於Qt的USBCAN模組的二次開發

基於Qt的USBCAN模組的二次開發

Python 繼承

繼承允許我們定義繼承另一個類的所有方法和屬性的類。
父類是繼承的類,也稱為基類。
子類是從另一個類繼承的類,也稱為派生類。

  • 建立父類
    任何類都可以是父類,因此語法與建立任何其他類相同:
    例項
    建立一個名為 Person 的類,其中包含 firstname 和 lastname 屬性以及 printname 方法:
class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

  def printname(self):
    print(self.firstname, self.lastname)

# 使用 Person 來建立物件,然後執行 printname 方法:

x = Person("Bill", "Gates")
x.printname()
  • 建立子類
    要建立從其他類繼承功能的類,請在建立子類時將父類作為引數傳送:
    例項
    建立一個名為 Student 的類,它將從 Person 類繼承屬性和方法:
class Student(Person):
  pass
  • 新增 init() 函式
    到目前為止,我們已經建立了一個子類,它繼承了父類的屬性和方法。
    我們想要把 init() 函式新增到子類(而不是 pass 關鍵字)。
    註釋:每次使用類建立新物件時,都會自動呼叫 init() 函式。
    例項
    為 Student 類新增 init() 函式:
class Student(Person):
  def __init__(self, fname, lname):
    # 新增屬性等

當您新增 init() 函式時,子類將不再繼承父的 init() 函式。
註釋:子的 init() 函式會覆蓋對父的 init() 函式的繼承。
如需保持父的 init() 函式的繼承,請新增對父的 init() 函式的呼叫:

class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)
  • 使用 super() 函式
    Python 還有一個 super() 函式,它會使子類從其父繼承所有方法和屬性:
class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)

8 新增方法
例項
把名為 welcome 的方法新增到 Student 類:

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

  def welcome(self):
    print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)