1. 程式人生 > >python - 類與物件

python - 類與物件

# -*- coding:utf-8 -*-

'''
@project: jiaxy
@author: Jimmy
@file: study_類與物件.py
@ide: PyCharm Community Edition
@time: 2018-11-19 09:43
@blog: https://www.cnblogs.com/gotesting/

'''


'''
類與物件

class 類名:
屬性:變數
行為:函式

類名規範:駝峰命名法:TestEnginner
'''

class SeniorTestingEnginner:
# 屬性
workyear = 3
salary = 20000

# 行為

# 物件方法
def coding(self,language,a=500,*args,**kwargs):
# self:標識此方法為物件方法,只能由物件來呼叫
print('此處列印self:{0}'.format(self))
print('會寫{0}程式碼,寫了{1}行'.format(language,a))
print('動態引數:{0}'.format(args))
print('關鍵字引數:{0}'.format(kwargs))
print('self:工作年限是{0}年,月薪是{1}'.format(self.workyear,self.salary))
self.do_function_testing() #呼叫物件方法
self.do_sql('oracle') #呼叫靜態方法
self.do_linux() #呼叫類方法
return 'return動態引數{0}:'.format(args)

# 靜態方法:不需要特意建立例項來呼叫
@staticmethod
def do_sql(name):
print('會操作{0}資料庫'.format(name))

# 類方法
@classmethod
def do_linux(cls):
print('此處列印cls:{0}'.format(cls))
print('cls:工作年限是{0}年,月薪是{1}'.format(cls.workyear,cls.salary))

def do_function_testing(self):
print('會功能測試')

def do_auto_testing(self):
print('會自動化測試')

def do_api_testing(self):
print('會介面測試')

# 萬物皆物件物件擁有類裡面的所有屬性和函式的使用權
# 例項化物件 類名()
p1 = SeniorTestingEnginner()
print('此處列印物件:{0}'.format(p1))
p1.coding('python',5000,1,2,3,4,name='Jimmy',hobby='play')
t = p1.coding('python',5000,1,2,3,4,name='Jimmy',hobby='play')
print(t)

# 靜態方法 @staticmethod裝飾的 呼叫方法: 類名.函式名()
SeniorTestingEnginner.do_sql('mysql')

# 類方法 @classmethod裝飾的 呼叫方法:類名.函式名()
SeniorTestingEnginner.do_linux()

'''
區別

1. 物件方法:self ; 靜態方法:@staticmethod裝飾 ; 類方法:@classmethod裝飾
2. 物件方法可以通過self呼叫類裡面的任意屬性值;類方法可以同cls來呼叫類裡面的任意屬性值;靜態方法無法呼叫屬性值
3. 如果一個方法與類裡面的屬性沒有關聯,可以使用靜態方法
4. 物件方法、類方法、靜態方法 都支援物件呼叫
5. 類方法、靜態方法支援類名直接呼叫
'''

'''
1. 引數: 位置引數 預設引數 動態引數 關鍵字引數,通通都可以加
2. return: 與普通函式的return是一樣的
'''