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个对象

 

posted @ 2020-06-08 17:41  旅行没有终点  阅读(172)  评论(0编辑  收藏  举报