一、基礎例項**
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無參構造方...