物件導向程式設計是最有效的軟體編寫方法之一。在物件導向程式設計中,編寫表示現實世界中的事物和情景的類,並基於這些類來建立物件。
類的簡單示例
class dog():
def __init__(self,name,age):
self.name = name
self.age = age
def sit(self):
print(self.name.title() + " is now sitting.")
def roll_over(self):
print(self.name.title() + " roll over.")
類中的函式稱為方法,有關函式的一切都適用於方法,唯一重要的差別是呼叫方法的方式
其中__init__()是乙個特殊的方法,每當根據類建立新例項時,python都會自動執行他。在這個方法的名稱中,開頭和末尾各有兩個下劃線,這是一種約定,旨在避免python預設方法與普通方法發生名稱衝突
類中每個屬性都要必須有初始值,若要給屬性指定預設值,可在__init__()指定初始值,且無需給它提供初始值的形參
我們建立dog例項時,python將呼叫dog類方法__init__()。我們將通過實參向dog()傳遞名字和年齡;self會自動傳遞,因此我們不需要傳遞它。每當我們根據dog類建立例項時,都只需給最後兩個形參提供值
在python2.7 中建立類時,需要做細微的修改————在括號內包含單詞object
class classname(object):
--snip--
可將類視為有關如何建立例項的說明。
my_dog = dog("willie",6)
訪問屬性
print("my dog's name is " + my_dog.name.title())
print("my dog is " + str(my_dog.age) + " years old")
呼叫方法
my_dog.sit()
my_dog.roll_over()
直接修改屬性的值
my_dog.age = 7
print("my dog is " + str(my_dog.age) + " years old")
通過方法修改屬性的值
class car():
def __init__(self,make,model,year):
self.make = make
self. model =model
self.year= year
self.odometer_reading = 0
def update_odometer (self,mileage):
self.odometer_reading = mileage
def get_descriptive_name(self):
long_name = str(self.year) + " " + self.make + " " + self.model
return long_name.title()
def read_odometer(self):
print("this car has " + str(self.odometer_reading) + " miles on it.")
my_car = car("audi","a6",2016)
print(my_car.get_descriptive_name())
my_car.update_odometer(23)
my_car.read_odometer()
乙個類繼承另乙個類時,它將自動獲得另乙個類的所有屬性和方法;原有的類稱為父類,而新類稱為子類。
子類繼承了其父類所有屬性和方法,同時還可以定義自己的屬性和方法
建立子類的例項時,,python首先需要完成的任務是給父類的所有的屬性賦值。為此,子類方法__init__()需要父類施以緩手
class electriccar(car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
my_tesla = electriccar("tesla","modle s",2018)
print(my_tesla.get_descriptive_name())
class electriccar(car):
def __init__(self,make,model,year):
super(electriccar,self).__init__(make,model,year)
讓乙個類繼承另乙個類後,可新增區分父類所需的新屬性和方法
class electriccar(car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery_size = 70
def decribe_battery(self):
print("this car has a " + str(self.battery_size) + "-kwh battery.")
my_tesla = electriccar("tesla","modle s",2018)
print(my_tesla.get_descriptive_name())
my_tesla.decribe_battery()
對於父類地方法,只要它不符合子類模擬的實物的行為,都可以對其進行重寫。為此,可在子類中定義乙個這樣的方法,即它與要重寫的父類的方法同名。
這樣,python將不會這個父類方法,而關注你在子類中定義的相應方法
python入門基礎之 類
小白自用筆記,如有錯誤還請指正 類 屬性 方法 類的名稱開頭字母要大寫如 point emailclient。且沒有下劃線 屬性分為類屬性和例項屬性 簡單的說 類屬性 是在類中直接寫的屬性,例項屬性 指在類外重寫的屬性。方法相當於類中的函式 詳見以下示例 class point x 2 類屬性 y ...
Python 入門之類的繼承
from animalstest import animals 請在下面填入定義fish類的 fish類繼承自animals類 begin class fish animals end def init self,name self.name name defswim self print s會游泳...
python入門之類的繼承
類的繼承 1 定義類的繼承 首先我們來看下類的繼承的基本語法 class classname baseclassname 1 定義類的繼承 首先我們來看下類的繼承的基本語法 class classname baseclassname 在定義類的時候,可以在括號裡寫繼承的類,一開始也提到過,如果不用繼...