1.搭建測試環境
import os,sys
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0,BASE_PATH)
#電腦沒裝paycharm時,加入這倆行,代替mark source root
搭建測試環境:
1、申請一臺服務器
2、安裝依賴軟件
python3
flask # 確認需要安裝的第三方模塊
pymysql
redis
mysql
redis # 確認使用的數據庫和開發語言及版本
3、獲取代碼
https: // git.coding.net / qiuqiu13 / day8.git
4、修改配置文件 # 確認哪些需要修改,并測試是否修改正確
5、編譯、打包(java、c、c + +) # 根據需求,有時候不需要
6、導入基礎數據
建表 # 初始化數據庫,建立表結構
7、啟動程序
日常部署:
1、更新代碼
2、修改表結構(如果數據有修改的話)
3、修改配置文件
4、編譯、打包(java、c、c++)
5、重啟程序
2. 面對對象編程
下面標注了有關類的名詞與說明
class Car: #Car是類,用class來定義一個類,類名首字母最好大寫。類是一個種類、一個模型,將相似功能封裝到一個類中,里邊用不同函數實現不同功能
wheel = 4 #wheel是類變量,即直接在類下面定義的變量,沒有加self的,每個實例都可以用.節省內存
def __init__(self,color,p): #構造函數。類在實例化的時候會自動執行的一個函數
self.color = color #實例變量,加了self的變量,必須得實例化且調用方法之后才可以使用。也可以定義為一個實例(對象)
self.p = p
def help(self): #實例方法,需要傳self的方法,必須實例化之后才可以使用,實例方法里面可以隨便通過self來調用實例方法,類方法,靜態方法,類變量。
print('汽車有%s個輪子'%self.wheel)
print('汽車的顏色是%s'%self.color)
print('牌子%s'%self.p)
print('='*10)
self.haha()
self.check_wheel()
@classmethod #要定義一個類方法
def check_wheel(cls): #類方法
# 1、不需要實例化就可以調用,如Car.check_wheel(cls)
# 2、它可以使用類變量
# 3、調用其他的類方法。
# 4、它不可以使用實例方法、實例變量
# 如果類里面的這個方法,它并沒有使用到其他的實例變量、或者其他實例方法,那么就給他定義成類方法
print('cls的內存地址',id(cls))
print(cls.wheel)
cls.haha()
@classmethod
def haha(cls):
print('哈哈哈')
cls.help2()
@staticmethod #靜態方法,如果不需要傳參,不需要調用變量,單純輸出值,可以使用靜態方法
# 1、不需要實例化就可以調用的
# 2、它就是一個定義在類里面的普通函數,不能使用實例變量、實例方法、不能使用類變量、類方法。
def help2(): #調用時,用對象.help2
print('這個類的作用是造汽車,它里面有xxx方法')
@property #屬性方法,調用有些特殊。如print(mcb.yesterday),而不能用print(mcb.yesterday())
def yesterday(self):
import datetime
res = datetime.date.today() + datetime.timedelta(-1)
return str(res)
def tom(self):
import datetime
res = datetime.date.today() + datetime.timedelta(1)
return str(res)
def __del__(self): #實例在銷毀的時候自動執行的函數
pass
Car.help2() #調用靜態方法
mcb = Car('赤橙黃綠青藍紫','馬春波') #實例化,mcb的id和self的id一樣。
print(mcb.yesterday) #調用屬性方法
print(mcb.tom()) #調用實例方法
mcb.wheel = 28 #追加定義變量,只對實例方法起作用
mcb.haha()
mcb.help()
mcb.help2()
print('Car的內存地址',id(Car))
Car.check_wheel()
Car.wheel= 19
print(Car.wheel)
benc = Car('黑色','奔馳')
benc.help()
bmw = Car('白色','寶馬')
bmw.help()
3.self的作用
方法中變量前面不加self,該變量只能供該方法使用。
方法中變量前面加上self,該變量能供其他實例方法使用。
self的id和實例化后的實例(對象)的id一樣,即self代表的是本類對象。
self還可以追加變量:如
class Person:
def __init__(self,name):
print('開始造人了',name)
self.name = name # 實例變量
self.age = 18
def cry(self,size):
print('%s在%s哭。年齡是%s'%(size,self.name,self.age))
self.size = '大哭'
self.date = '20190106'
def say(self):
print('我叫%s,我住在%s.'%(self.name,self.addr))
print(self.size)
print('Jin天的日期',self.date)
self.help()
def help(self):
print(self.date)
mcb = Person('馬春波')
cq = Person('陳琦')
mcb.grilfriend = cq #加一個變量,變量可以為對象
print('馬春波的女朋友',mcb.grilfriend.name)
mcb.grilfriend.cry('大')
mcb = Person('馬春波')
mcb.addr = '北京' #原類中沒有addr變量,這兒加了一個,可以供下邊調用的函數使用。
mcb.cry('大') #cry(mcb,大)
mcb.say()
#該功能與上邊的加grilfriend變量一樣
def car(self,car_name): #
self.car_name = car_name
#函數里面給mcb加了一個變量
car(mcb,'奔馳')#把mcb這個實例傳給了self,self指的就是mcb這個實例
print(mcb.car_name)
4.私有、繼承
class Lm:
money = 1000000
house = 5
def driver(self):
print('會開車')
class Mcb(Lm): #這里繼承了類Lm, Lm叫做父類,其中所有的屬性和方法這兒都能用,節省了寫重復代碼。該類中如果有父類一樣的方法,優先用該類的。
def about_me(self):
print('我有 %s 錢 ,%s 房子'%(self.money,self.house))
self.driver()
def driver(self):
print('會開28個輪子的汽車')
m = Mcb()
m.driver()
m.about_me()
class My:
def test(self):
self.__password = 123456 #加了雙下劃線的變量,類的外部不能訪問,稱為私有。
def say(self):
print('password',self.__password)
def __set_password(self): #加了雙下劃線的方法,類的外部不能訪問,稱為私有。
self.__password = 7890
def update(self):
self.__set_password()
m = My()
m.test()
m.say()
m.update()
m.say()