zoukankan      html  css  js  c++  java
  • 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个对象
  • 相关阅读:
    Vue生命周期
    脚本生命周期
    音频
    光照系统
    InstantOC(对象渲染---游戏优化)
    kafka单机环境配置以及基本操作
    mysql 锁机制
    java.math.BigDecimal类multiply的使用
    去掉返回的json中特殊字符
    TheadLocal与synchronized
  • 原文地址:https://www.cnblogs.com/chushujin/p/13067160.html
Copyright © 2011-2022 走看看