美文网首页
P 面向对象 | 类的结构

P 面向对象 | 类的结构

作者: Ricsy | 来源:发表于2019-10-05 00:20 被阅读0次


一、类

类是一个特殊的对象(类对象)
python中一切皆对象
eg:

  1. 定义的类属于类对象
  2. 创建的实例属于实例对象

1.1 类的结构

面向对象开发中

  1. 设计类
  2. 使用类名()创建对象
    (1) 在内存中为对象分配空间
    (2) 调用初始化方法__init__——对象初始化
  3. 对象创建后,内存中就有一个对象的实实在在的存在——实例
  • 每一个对象都有自己独立的内存空间,保存各自不同的属性
  • 多个对象的方法,在内存中只有一份,在调用方法时,需要把对象的引用传递到方法内部
    eg:
    对象的引用self,可以通过self.访问自己的属性和调用自己的方法
概念 说明
实例 类创建出来的对象叫做类的实例
实例化 类创建对象的动作叫做实例化
实例属性 对象的属性叫做实例属性
实例方法 对象调用的方法叫做实例方法

1.2 类属性和实例属性

概念 说明
类属性 给类对象定义的属性

1. 通常用来记录与这个类相关的特征

2. 不会用于记录具体对象的特征
类方法 给类对象定义的方法

1.2.1 属性的获取机制

1.2.2 类属性访问方式

类名.类属性名
对象名.类属性名不推荐

如果使用对象名.类属性名 = 值的赋值语句,只会给对象增加一个属性,而不会影响到类属性的值,所以不推荐对象名.类属性名

eg:

class Tool:
    # 类属性,用于记录工具对象的总数
    count = 0

    def __init__(self, name):
        self.name = name
        # 修改类属性
        Tool.count += 1


if __name__ == '__main__':
    tool1 = Tool('斧头')
    tool2 = Tool('榔头')
    tool3 = Tool('铁锹')
    tool4 = Tool('筛子')
    tool5 = Tool('梯子')
    tool1.count = 99
    print("工具对象的总个数:%s" % Tool.count)
    print("工具对象的总个数:%s" % tool1.count)
    print("tools对象count属性的值:%s" % tool1.count)


1.3 类方法和静态方法

概念 说明
类属性 给类对象定义的属性

1. 通常用来记录与这个类相关的特征

2. 不会用于记录具体对象的特征
类方法 给类对象定义的方法

1.3.1 类方法

类方法可以直接访问类属性或调用其他的类方法
语法:

@classmethod
def 类方法名(cls):
    pass
名称 说明
self 哪一个实例调用的方法就是那一个实例的引用
cls 哪一个类调用的方法就是那一个类的引用
  • 可以通过cls.访问类属性和调用其他的类方法

eg:

class Tool:
    # 类属性,用于记录工具对象的总数
    count = 0

    def __init__(self, name):
        self.name = name
        # 修改类属性
        Tool.count += 1

    # 类方法,用于显示工具对象的总数
    @classmethod
    def show_tool_count(cls):
        print("工具对象的总个数:%s" % cls.count)


if __name__ == '__main__':
    tool1 = Tool('斧头')
    tool2 = Tool('榔头')
    tool3 = Tool('铁锹')
    tool4 = Tool('筛子')
    tool5 = Tool('梯子')
    Tool.show_tool_count()

1.3.2 静态方法

静态方法既不需要访问类属性或调用类方法
静态方法也不需要访问实例属性或调用实例方法

语法:

@staticmethod
def 静态方法名():
    pass

不需要创建对象,直接用类名.来调用静态方法

eg:

class Game:
    # 类属性,记录游戏历史最高分
    top_score = 0

    # 静态方法,显示游戏帮助信息
    @staticmethod
    def show_help():
        print("帮助信息:让僵尸进入大门")

    # 类方法,显示历史最高分
    @classmethod
    def show_top_score(cls):
        print("历史最高分是:%d" % cls.top_score)

    # 初始化
    def __init__(self, player_name):
        # 实例属性,记录当前游戏的玩家姓名
        self.player_name = player_name

    # 实例方法,开始当前玩家的游戏
    def start_game(self):
        print("开始游戏啦...")


# 测试主函数
if __name__ == '__main__':
    xiaoming = Game('小明')
    Game.show_help()
    Game.show_top_score()
    xiaoming.start_game()


更新中......


相关文章

  • P 面向对象 | 类的结构

    一、类 类是一个特殊的对象(类对象)python中一切皆对象eg: 定义的类属于类对象 创建的实例属于实例对象 1...

  • iOS(swift)类和结构体的区别

    类是面向对象编程;结构体是面向协议编程(面向对象的升级)。swift推荐在app中使用结构体(struct),类(...

  • swift面相对象的基础<一>

    面向对象的核心是类和对象,面向对象的三大特征:封装,继承和多肽。swift可以定义枚举,结构体和类三种面向对象的实...

  • Swift--Swift语言中的面向对象特性

    Swift语言中的面向对象类型 枚举 结构体 类 可选链 访问限定 Swift语言中的面向对象类型 面向对象概念的...

  • 7.面向对象编程

    Swift 面向对象编程 面向对象的三大特性 继承封装多态 基本单元 枚举结构体类协议扩展 面向对象概述 从整体的...

  • 第13章-OOP面向对象编程

    面向对象(OOP) go并不是一个纯面向对象的编程语言。在go中的面向对象,结构体替换了类。 Go并没有提供类cl...

  • Golang(十三) OOP面向对象编程

    面向对象(OOP) go并不是一个纯面向对象的编程语言。在go中的面向对象,结构体替换了类。 Go并没有提供类cl...

  • JS第四天

    一、面向对象JS JS面向对象初始 1、属性与方法 使用属性解决循环绑定变量污染 2、类字典结构使用 结构 拓展 ...

  • Python GUI与面向对象

    Python GUI与面向对象 Python面向对象 对象是数据与其能实施的操作的封装结构 类是对于实例对象的抽象...

  • Java面向对象一

    一、类与对象 类中主要包括五种结构:变量、方法、构造器、代码块、内部类 1.面向对象与面向过程 面向过程:强调的是...

网友评论

      本文标题:P 面向对象 | 类的结构

      本文链接:https://www.haomeiwen.com/subject/ftzspctx.html