Python3-2020-测试开发-17- 类编程
一、类的定义
面向对象编程:继承,多态,封装
类的定义:类名一般采用首字母大写,多个单词采用驼峰命名原则
一个Python对象包含三个部分:
1.id(identity识别码)
2.type(对象类型)
3.value(对象的值)
(1)属性(attribute)
(2)方法(method)
内存分析图:
二、类方法
类方法:从属于类对象的方法,类的方法通过装饰器@classmethod来定义,格式如下:
@classmethod
def 类方法名(cls [, 形参列表]):
函数体
注意:
1. @classmethod必须位于方法上面一行
2. 第一个cls必须有,cls指的是“类对象”本身
3. 调用类的方法格式,类名.类方法名(参数列表),参数列表中,不需要也不能传cls
4. 类方法中访问实例属性和实例方法会导致错误
5. 子类继承父类方法时,传入的cls为子类对象,不是父类对象
三、静态方法
静态方法和模块中定义的普通函数没有区别,只不过“静态方法”放到了类的命名空间里,需要通过类调用
class Student: company = "BYD" # 类 属性 count = 0 def __init__(self,name,score): """ 构造函数:初始化创建好的对象,给实例属性赋值 self指的是刚刚创建好的实例对象 :param name: :param score: """ self.name = name self.score = score Student.count = Student.count+1 # print("1") @classmethod def printCompany(cls): """ 类方法 :return: """ print(cls.company) @staticmethod def add(): """ 静态方法 :return: """ print("静态方法:"+Student.company) def say_score(self): print("我的公司名称为:{0}".format(Student.company)) print("{0}的分数是:{1}".format(self.name,self.score)) Student.printCompany() Student.add() s1 = Student("chu01",18) # 调用构造方法 s1.say_score() print("一共创建{0}个对象".format(Student.count))
输出
BYD 静态方法:BYD 我的公司名称为:BYD chu01的分数是:18 一共创建1个对象
当有些人一出生就有的东西,我们要为之奋斗几十年才拥有。但有一样东西,你一辈子都不会有,那就是我们曾经一无所有。