当前位置: 首页 > news >正文

Python---面向对象其他特性

1、类属性

Python中,属性可以分为实例属性和类属性。

类属性就是 类对象中定义的属性,它被该类的所有实例对象所共有。通常用来记录 与这类相关 的特征,类属性 不会用于记录 具体对象的特征。

在Python中,一切皆对象。类也是一个特殊的对象,我们可以单独为类定义属性。


class Person(object):
    # 定义类属性
    count = 0
    def __init(self, name, age):
        self.name = name
        self.age = age
        
p1 = Person('Tom', 23)
p2 = Person('Harry', 26)


2、类属性代码实现

定义count类属性,用于记录实例化Person类,产生对象的数量。


class Person(object):
    # 定义类属性count
    count = 0

    # 定义一个__init__魔术方法,用于进行初始化操作
    def __init__(self, name):
        self.name = name
        # 对count类属性进行+1操作,用于记录这个Person类一共生成了多少个对象
        Person.count += 1

# 1、实例化对象p1
p1 = Person('Tom')
p2 = Person('Harry')
p3 = Person('Jennifer')
# 2、在类外部输出类属性
print(f'我们共使用Person类生成了{Person.count}个实例对象')


3、类方法

为什么需要类方法,在面向对象中,特别强调数据封装性。所以不建议直接在类的外部对属性进行直接设置和获取。所以我们如果想操作类属性,建议使用类方法。


class Tool(object):
    # 定义一个类属性count
    count = 0
    # 定义一个__init__初始化方法
    def __init__(self, name):
        self.name = name
        Tool.count += 1
    # 封装一个类方法:专门实现对Tool.count类属性进行操作
    @classmethod
    def get_count(cls):
        print(f'我们使用Tool类共实例化了{cls.count}个工具')
        
t1 = Tool('斧头')
t2 = Tool('榔头')
t3 = Tool('铁锹')

Tool.get_count()


类方法主要用于操作类属性或类中的其他方法。

4、静态方法

在开发时,如果需要在类中封装一个方法,这个方法:

① 既 不需要访问实例属性或者调用实例方法

② 也 不需要访问类属性或者调用类方法

这个时候,可以把这个方法封装成一个静态方法


# 开发一款游戏
class Game(object):
    # 开始游戏,打印游戏功能菜单
    @staticmethod
    def menu():
        print('1、开始游戏')
        print('2、游戏暂停')
        print('3、退出游戏')

# 开始游戏、打印菜单
Game.menu()


 

http://www.lryc.cn/news/255291.html

相关文章:

  • 【Ambari】Python调用Rest API 获取YARN HA状态信息并发送钉钉告警
  • linux之buildroot(3)配置软件包
  • 学会用bash在linux写脚本 (一)
  • Leetcode 2949. Count Beautiful Substrings II
  • 【Python系列】Python函数
  • 自定义TypeHandler 将mysql返回的逗号分隔的String转换到List
  • Spring 高级装配详解
  • mapbox Marker添加自定义html
  • Linux UUCP命令教程:如何在Linux系统中进行文件复制(附实例详解和注意事项)
  • 【android开发-21】android中调用系统摄像头camera拍照和相册的用法详解
  • 最新版本——Hadoop3.3.6单机版完全部署指南
  • 理解自我效能感:你的内在动力来源
  • Java第二十一章
  • Redis交互速度慢,CPU占用100%,集群方案,报错等问题
  • wpf 系统在显示器分辨率和缩放设置为非1920*1080和100%时,SelectionChanged事件响应问题分析?
  • 刷题记录--算法--简单
  • 条码生成器与Zint使用
  • C#winform上下班打卡系统Demo
  • P1 Qt的认识及环境配置
  • 单元测试Nunit的几种断言
  • 前端中的响应式布局与各个端适配
  • 2023年5个自动化EDA库推荐
  • 7-1 查找书籍
  • 【无线网络技术】——无线广域网(学习笔记)
  • 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(2)后端跨域、登录模块、springboot分层架构、IDEA修改快捷键、vue代码风格
  • NGINX相关配置
  • 如何将idea中导入的文件夹中的项目识别为maven项目
  • CleanMyMac4.16中文最新版本下载
  • 谷歌正式发布最强 AI 模型 Gemini
  • 无人机语音中继电台 U-ATC118