python中根據約定,首字母大寫的名稱指的是類。引數self必不可少且必須位於其他形參的前面。因為python呼叫__init__()方法建立dog例項時,將自動傳入實參self。它是乙個指向例項本身的引用,讓例項能夠訪問類中的屬性和方法。
例1
#建立dog類,
class dog():
def __init__(self,name,age): #__init__()下劃線是雙份的......
"""初始化屬性name和age"""
self.name = name #以self為字首的變數都可供類中的所有方法使用
self.age = age
def sit(self):
"""模擬被命令時蹲下"""
print(self.name.title() + " is now sitting.")
def roll_over(self):
print(self.name.title() + " rolled over!")
#根據類建立例項
my_dog = dog('willie',6)
print("my dog's name is " + my_dog.name.title() +".")
print("my dog is " + str(my_dog.age) + " yesrs old.")
my_dog.sit()
my_dog.roll_over()
例2
#使用類和例項
#car類
class car():
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0 #給屬性乙個預設的值
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")
#增加修改odometer的方法
def update_odometer(self,mileage):
if mileage > self.odometer_reading:
self.odometer_reading = mileage
else:
print("you can't roll back an odometer")
my_new_car = car('audi','a4','2020')
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
#直接修改屬性的值
my_new_car.odometer_reading = 60
my_new_car.read_odometer()
#通過方法修改屬性的值
my_new_car.update_odometer(80)
my_new_car.read_odometer()
繼承
乙個類繼承另乙個類的時候,它將自動獲取另乙個類的所有屬性和方法,原有類稱為父類,新的類稱為子類。
例1
#電動汽車類,electriccar類繼承car類
class electriccar(car): #定義子類時,括號內必須包含父類的名稱
def __init__(self,make,model,year):
super(). __init__(make,model,year) #super()是乙個特殊的函式,將父類和子類關聯起來
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','2020')
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()
#將例項用作屬性
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 electirccar2(car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery = battery()
my_tesla2 = electirccar2('tesla','model s','2020')
print(my_tesla2.get_descriptive_name())
my_tesla2.battery.describe_battery()
Python筆記 五 類
1.根據類來建立物件被稱為 例項化 class dog 根據約定,在python中,首字母大寫的名稱指的是類。每當使用dog類建立例項的時候,python都會自動執行 init 方法 def init self,name,age 初始化屬性name和age self.name name self.a...
python學習筆記(五)
python裡的流程控制語句 if expression statements s else statements s identationerror 縮排錯誤,縮排4個空格 true 非空的值 string,tuple,list,set,dict false 0,null,其他空值 需要多次判斷使...
python 學習筆記 (五)
遞迴函式,如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。該包下的iterable方法是用來判斷物件是否可以迭代 from collections import iterable 遞迴算階乘 def fact n if n 1 return 1 return n fact n 1 print ...