# -*- 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是一样的
'''