建立類
class
dog():
"""一次模擬小狗的簡單嘗試"""
def__init__
(self, name, age)
:"""初始化屬性name和age"""
self.name = name
self.age = age
defsit(self)
:"""模擬小狗被命令時蹲下"""
print
(self.name.title()+
" is now sitting."
)def
roll_over
(self)
:"""模擬小狗被命令時打滾"""
print
(self.name.title()+
" rolled over!"
)
使用類
my_dog = dog(
'willie',6
)your_dog = dog(
'lucy',3
)print
("my dog's name is "
+ my_dog.name.title()+
".")
print
("my dog is "
+str
(my_dog.age)
+" years old."
)my_dog.sit(
)print
("\nyour dog's name is "
+ your_dog.name.title()+
".")
print
("your dog is "
+str
(your_dog.age)
+" years old."
)your_dog.sit(
)#執行
my dog's name is willie.
my dog is
6 years old.
willie is now sitting.
your dog's name is lucy.
your dog is
3 years old.
lucy is now sitting.
法__init__() 定義成了包含三個形參:self 、name 和age 。在這個方法的定義中,形參self 必不可少,還必須位於其他形參的前面。為何必須在方法定義中包 含形參self 呢?因為python呼叫這個__init__() 方法來建立dog 例項時,將自動傳入實參self 。每個與類相關聯的方法呼叫都自動傳遞實參self ,它是乙個指向例項本身 的引用,讓例項能夠訪問類中的屬性和方法。我們建立dog 例項時,python將呼叫dog 類的方法__init__() 。
我們將通過實參向dog() 傳遞名字和年齡;self 會自動傳遞,因此我們不需要傳遞它。每當我們根據dog 類建立例項時,都只需給最後兩個形參(name 和age )提供值。
類中的每個屬性都必須有初始值,哪怕這個值是0或空字串。在有些情況下,如設定預設值時,在方法__init__() 內指定這種初始值是可行的;如果你對某個屬性這樣做 了,就無需包含為它提供初始值的形參。
class
car():
def__init__
(self, make, model, year)
: self.make = make
self.model = model
self.year = year
self.odometer_reading =
0def
get_descriptive_name
(self)
:print
(self.make)
defread_odometer
(self)
:print
("this car has "
+str
(self.odometer_reading)
+" miles on it."
)my_new_car = car(
'audi'
,'a4'
,2016
)print
(my_new_car.get_descriptive_name())
my_new_car.read_odometer(
)
定義了乙個名為battery 的新類,它沒有繼承任何類
方法__init__() 除self 外,還有另乙個形參battery_size 。這個形參是可選的:如果沒有給 它提供值,電瓶容量將被設定為70。方法describe_battery() 也移到了這個類中
在electriccar 類中,我們新增了乙個名為self.battery 的屬性()
這行**讓python建立乙個新的battery 例項(由於沒有指定尺寸,因此為預設值70 ),並將 該例項儲存在屬性self.battery 中。每當方法__init__() 被呼叫時,都將執行該操作;因此現在每個electriccar 例項都包含乙個自動建立的battery 例項。
import car
class
battery()
:def
__init__
(self, battery_size=70)
: self.battery_size = battery_size
defdescribe_battery
(self)
:print
("this car has a "
+str
(self.battery_size)
+"-kwh battery."
)class
electriccar
(car.car)
:def
__init__
(self, make, model, year)
:super()
.__init__(make, model, year)
self.battery = battery(
)my_tesla = electriccar(
'tesla'
,'model s'
,2016
)my_tesla.get_descriptive_name(
)my_tesla.battery.describe_battery(
)
python爬蟲學習(七)
from selenium.webdriver.common.keys import keys browser webdriver.chrome browser.get 1 在搜尋框中輸入 selenium browser.find element by id kw send keys 趙麗穎 2 ...
Python學習筆記(七)
深淺拷貝 set 集合 函式a 1,2 3,4 b a.copy print b 結果 1,2 3,4 b 0 0 8 print a 結果 8,2 3,4 print b 結果 8,2 3,4 原理圖 去重關係測試 定義語法 s set in not in 集合等價與不等價 子集 s set al...
python學習筆記(七)
帶有 yield 關鍵字的的函式在 python 中被稱之為 generator 生成器 python 直譯器會將帶有 yield 關鍵字的函式視為乙個 generator 來處理。乙個函式或者子程式都只能 return 一次,但是乙個生成器能暫停執行並返回乙個中間的結果 這就是 yield 語句的...