# 創建
class Dog():
def __init__(self,n,a):
self.name=n
self.age=a
def sit(self):
print(self.name.upper()+' can sit!!!')
mydog=Dog('PI',22)
print('mydog has a name:'+mydog.name.title())
mydog.sit() #不需要參數 直接使用
#默認值
class cars():
def __init__(self,brand,price):
self.brand=brand
self.price=price
self.year=2019
def car(self):
print("The brand of my car:"+self.brand)
print('It was bought in '+str(self.year)+' at '+str(self.price)+'0000')
#注意後面所有函數對於參數的引用必須要用self.
mycar=cars('BMW',99)
mycar.car()
#直接修改屬性的值
mycar.year=2018
mycar.brand='BAOMA'
mycar.car()
#通過方法修改屬性的值
class cars():
def __init__(self,brand,price):
self.brand=brand
self.price=price
self.year=2019
def car(self):
print("The brand of my car:"+self.brand)
print('It was bought in '+str(self.year)+' at '+str(self.price)+'0000')
def modify(self,ye):
self.year=ye
mycar=cars('BWM',9999)
mycar.modify(2000) #可以修改默認值/非默認值的參數
mycar.car()
#modify函數也可以設置成帶有限制的
def modify(self,ye):
if ye >= self.price:
self.price=ye
else:
print('You cannot alter the price!')
#繼承
class cars():
def __init__(self,brand,price):
self.brand=brand
self.price=price
self.year=2019
def car(self):
print("The brand of my car:"+self.brand)
print('It was bought in '+str(self.year)+' at '+str(self.price)+'0000 RMB')
class electric(cars):
def __init__(self,bb,pp):
super().__init__(bb,pp)
#與上一行的對應 當然和父類的可以不對應 但是數量一定一致
mytesla=electric('BBBBBB',6666)
mytesla.car()
#繼承父類以後可以定義新屬性,新方法
class electric(cars):
def __init__(self,bb,pp):
super().__init__(bb,pp)
#與上一行的對應 當然和父類的可以不對應 但是數量一定一致
self.quality='Amazing!!!!!'
def newcar(self):
print("my electric car is so "+self.quality)
mytesla=electric('BBBBBB',6666)
mytesla.newcar()
#如果子類重寫父類中的方法,那麼按照重寫的來
#將實例作爲屬性(類中類)
#父類
class cars():
def __init__(self,brand,price):
self.brand=brand
self.price=price
self.year=2019
def car(self):
print("The brand of my car:"+self.brand)
print('It was bought in '+str(self.year)+' at '+str(self.price)+'0000 RMB')
#後期引用的類
class battery():
def __init__(self,battery_size=80):
self.battery_size=battery_size
def describe_battery(self):
print("The car has a "+str(self.battery_size)+" -kwh battery.")
#子類
class electric(cars):
def __init__(self,bb,pp):
super().__init__(bb,pp)
self.battery=battery()
#實例
my_tesla=electric('qqq',8888)
my_tesla.battery.describe_battery()
#被引用的類中可以與其他的函數來進行更復雜的操作
#導入另一個.py文件(模塊)的類 目的是爲了主程序的簡潔
from im import cars
my_new_car=cars('haha',2999999)
my_new_car.car()
#類似於導入函數
#導入某些類
from im import cars,electric
my_new_car=cars('haha',2999999)
my_new_car.car()
#導入整個模塊
import im
my_car=im.cars('BMW',99999)
my_car.car()
#導入全部類
from im import *
#最推薦的import name 這種方法 類的來源很明確
#模塊中的模塊
#一個模塊中的類的使用依賴於其他模塊的類
#car1.py
class car():
--snip--
#car2.py
from car1 import car
class electric(car):
--snip--
#即在car2中類car是從car1中拿過來的 不拿就出錯
from car1 import car
from car2 import electric
#第三個模塊需要使用上面的兩個類
#python標準庫作爲一種模塊 其中包含一些類
#OrderedDict可以記錄鍵值的配對順序
from collections import OrderedDict
favorite_languages =OrderedDict()
favorite_languages['Jerry']='C++'
favorite_languages['Mory']='python'
favorite_languages['Tom']='ruby'
for name,language in favorite_languages.items():
print(language.title()+" is "+name.title()+"'s "+"favorite language.")
#導入random.py裏面的函數randint,自動生成隨機數
from random import randint
x=randint(1,8)
print(x)
#練習:根據篩子面數 利用上述函數和類生成隨機數
class Die():
def __init__(self,sides=6):
self.sides=sides
def roll_die(self):
return randint(1,self.sides)
random1=Die()
for i in range(10):
print(random1.roll_die())
random2=Die(10)
for i in range(10):
print(random2.roll_die())
random3=Die(20)
for i in range(10):
print(random3.roll_die())
#python標準庫:https://pymotw.com/3/
python第九章 類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.