python物件導向程式設計基礎

2021-09-25 07:31:12 字數 2919 閱讀 6399

一、基礎例項** 

class car():

def __init__(self, make, model, year):

"""初始化描述汽車的屬性"""

self.make = make

self.model = model

self.year = year

self.odometer_reading = 0 #如果對屬性設定預設值,那麼括號裡面就不需要給

#odometer_reading這個形參了

def get_descriptive_name(self):

long_name = str(self.year)+ " " + self.make + " " +self.model

return long_name.title()

def read_odometer(self):

print(str(self.get_descriptive_name()) + " has " + str(self.odometer_reading) + " miles on it")

#例項化

my_new_car = car('audi', 'a6', 2016)

print(my_new_car.get_descriptive_name())

my_new_car.read_odometer()

""" 筆記

1、以self為字首的變數可以供類中的所有方法使用

2、在類中的乙個函式中呼叫另乙個函式,需要在前面加上self.

例如本例的self.get_descriptive_name()

"""

輸出結果:

二、類的繼承

子類繼承了父類的所有屬性和方法,同時還可以定義自己的屬性和方法

注意:建立子類,繼承父類時,父類必須包含在當前檔案中,且位於所建立的子類前面

class car():

--snip(省略,同上)--

#子類electriccar繼承父類car

class electriccar(car):

def __init__(self, make, model, year):

"""初始化父類的屬性"""

super().__init__(make, model, year) """注意self引數已在super()中傳入,在

__init__()中將隱式傳遞,不需要寫出(也不能寫)"""

"""再初始化子類的特有屬性"""

self.battery_size = 70

def describe_battery(self):

"""列印一條描述電瓶容量的訊息"""

print("this car has a " + str(self.battery_size) + "-kwh battery.")

#例項化

my_tesla = electriccar('tesla', 'model s', 2016)

print(my_tesla.get_descriptive_name()) """這個是父類的方法,子類繼承過來了,可以直接用"""

my_tesla.describe_battery() """這是子類自己新定義的方法"""

三、重寫父類的方法

對於父類的方法,只要它不符合子類模擬的實物的行為,對子類毫無意義,都可以對其進行重寫

方法:在子類中定義乙個與父類名字一樣的方法

這樣的話,子類例項化執行時,會優先考慮子類中重寫的這個方法,而忽略到父類中的同名方法

四、將類的例項用作屬性

例如:建立乙個新類battery,把它例項化用作electricar類的屬性

class car():

--snip(省略)--

class battery():

"""將電池封裝成乙個類"""

def __init__(self, battery_size=70):

self.battery_size=battery_size

def describe_battery(self):

print(" this car has a "+ str(self.battery_size) + "-kwh battery.")

class electriccar():

def __init__(self, make, model, year):

super().__init__(make, model, year)

self.battery = battery() """特別注意:將乙個類的例項化作為另乙個類的屬性"""

#例項化

my_tesla = electriccar('tesla', 'model s ', 2016)

print(my_tesla.get_describe_name())

my_tesla.battery.describe_battery()

五、模組化簡潔程式設計

建立乙個模組檔案car.py,包含只含car類的**

然後在另乙個檔案中匯入並使用

"""從car.py檔案(模組)中匯入car類"""

from car import car

my_new_car = car('audi', 'a4', 2016) #類的例項化

print(my_new_car.get_descriptive_name()) #呼叫car類中的方法

my_new_car.odometer_reading = 23 #直接修改屬性值

my_new_car.read_odometer() #呼叫car類中的方法,列印訊息

python物件導向程式設計基礎

python物件導向程式設計基礎 1 類的建立和例項化 2 繼承 多型 多重繼承 類的繼承是一種縱向的關係,def class baseclass class類繼承baseclass,擁有baseclass的屬性和方法 3 類的組合 類的組合是一種橫向關係 4 內部屬性 由於python語言沒有pu...

python基礎 物件導向程式設計

物件導向程式設計 object oriented programming,簡稱oop,是一種程式設計思想。oop把物件作為程式的基本單元,乙個物件包含了資料和運算元據的函式。面向過程的程式設計把電腦程式視為一系列的命令集合,即一組函式的順序執行。為了簡化程式設計,面向過程把函式繼續切分為子函式,即把...

物件導向程式設計基礎

當類中的成員變數與成員方法中的引數重名時,使用this,來使用類中的成員變數 不用的話,就是成員方法中的引數 public class test public static void main string args 123 system.out.println this.name abc無參構造方...