一篇文章帶你瞭解Python中的類

1、類的定義

創建一個rectangle.py文件,並在該文件中定義一個Rectangle類。在該類中,__init__表示構造方法。其中,self參數是每一個類定義方法中的第一個參數(這裡也可以是其它變量名,但是Python常用self這個變量名)。當創建一個對象的時候,每一個方法中的self參數都指向並引用這個對象,相當於一個指針。在該類中,構造方法表示該類有_width和_height兩個屬性(也稱作實例變量),並對它們賦初值1。

__str__方法表示用字符串的方式表示這個對象,方便打印並顯示出來,相當於Java中的類重寫toString方法。其中,__init__和__str__是類提供的基本方法。

class Rectangle:
    # 構造方法
    def __init__(self, width=1, height=1):
        self._width = width
        self._height = height
    # 狀態表示方法
    def __str__(self):
        return ("Width: " + str(self._width)
                + "\nHeight: " + str(self._height))
    # 賦值方法
    def setWidth(self, width):
        self._width = width
    def setHeight(self, height):
        self._height = height
    # 取值方法
    def getWidth(self):
        return self._width
    def getHeight(self):
        return self._height
    # 其它方法
    def area(self):
        return self._width * self._height

2、創建對象

新建一個Test.py文件,調用rectangle模塊中的Rectangle的類。

import rectangle as rec
r = rec.Rectangle(4, 5)
print(r)
print()
r = rec.Rectangle()
print(r)
print()
r = rec.Rectangle(3)
print(r)

接著輸出結果:

輸出

打印Rectangle類的對象直接調用瞭其中的__str__方法。上圖展示瞭初始化Rectangle對象時,構造方法中參數的三種不同方式。

創建一個對象有以下兩種形式,其偽代碼表示為:

1)objectName = ClassName(arg1,arg2,…)

2)objectName = moduleName.ClassName(arg1,arg2,…)

變量名objectName表示的變量指向該對象類型。

3、繼承

如果往父類中增加屬性,子類必須先包含刻畫父類屬性的初始化方法,然後增加子類的新屬性。偽代碼如下:

super().__ init __ (parentParameter1,…,parentParameterN)

新建一個square.py文件:

import rectangle as rec
class Square(rec.Rectangle):
    def __init__(self, square, width=1, height=1):
        super().__init__(width, height)
        self._square = square
    def __str__(self):
        return ("正方形邊長為:" + str(self._width) +
                "\n面積為:" + str(self._square))
    def isSquare(self):
        if self._square == self.getWidth() * self.getWidth():
            return True
        else:
            return False
s = Square(1)
print(s)
print(s.isSquare())
s = Square(2)
print(s)
print(s.isSquare())

輸出:

輸出

以上內容參考自機械工業出版社《Python程序設計》~

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: