python-面向对象基础-类属性&实例属性-构造&析构

2023-10-26

一、类的定义

'''
class 类名():
    类体
'''
class Person(object):
    pass

二、类中成员的定义:

class Person(object):
    
    #属性
    name = "tom"
    age = 18
    height = 180
    
    # 方法
    def eat(self,food):
        print(self.name + "eating" + food)

    def run(self):
        print(self.name + "runing")
'''
    类的定义包括成员变量(属性)定义、成员方法的定义
        成员变量: 定义同普通 变量相同都遵循标识符命名规范
        成员函数: 同普通函数定义基本相同,只是传参时候,第一个参数必须是该对象本身(一般是self 但是不是必须的,可以是其他合法的标识符 同 java 、c++ 中 this作用一样,表示当前对象)
'''

三、创建对象:

'''
变量名 = 类名()
说明:创建对象实际上就相当于定义了一个自定义的变量,()不能省略
'''
class Person(object):
    
    name = "tom"
    age = 18


p1 = Person() 
# 这里创建了一个Person的实例化对象,p1 为该对象的一个引用, 与普通变量定义相同            
num = 10 
# python 一切皆对象 10 也是一个对象 num 则是该对象的一个引用
'''
    说明: 定义变量(实例化对象) 实际上是在内存中开辟存储空间的过程,实际的对象存储在堆中,而该对象的引用存放在栈中
    
'''

四、类属性与实例属性

'''
类属性: 直接定义在类中,所有通过该类创建的对象都可以访问该属性、随着类出现而出现
实例属性: 只属于某一个对象,只有当前对象才能访问该属性,随着对象出现而出现
'''
class Person(object):
    
    # 类属性
    name = "tom"
    age = 18

    # 限制绑定
    __slots__ = ("name","age",)

    def __init__(self,name)
        # 实例属性 定义在构造函数中或者动态绑定
        self.name = name

p = Person("123")
# 对象属性动态绑定  只影响该对象
p.school = "北大"
# 类属性动态绑定    影响到类 实例化的所有对象
Person.school = "清华"
# 通过 __slots__ = 元祖  限制 只能动态绑定该元祖中的字段

'''
    关于类属性与实例属性的几点说明:
        1.实例属性: 对象.实例属性 类属性: 类名.类属性 或者  对象.类属性
        2.优先级不同:如果类属性 和实例属性重名,则通过对象访问,优先访问的是实例属性
        3.内存出现的时机不同: 类属性随着类的加载而出现,而实例属性随着对象的出现而出现
        4.使用场景不同:类属性用来定义多个对象共同的特征,实例属性用来定义每个对象特有的特征
'''

五、构造函数与析构函数

'''
构造函数:__init__()
调用时机:创建对象的时候,自动被调用
作用:构建对象,为对象的属性初始化
'''
class Person(object):

    def __init__(self,name,age):
        self.name = name;
        self.age = age

'''
析构函数:__del__()
调用时机:对象被销毁时候 自动被调用
作用:销毁对象
'''
class Person(object):

    def __del__(self):
        print("析构函数被执行了")

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python-面向对象基础-类属性&实例属性-构造&析构 的相关文章

  • Srpingboot项目application.yml文件没有生效

    1 首先看文件头是不是树叶 如果是不是 文件名称可能存在问题 我的问题 因为有父工程 去掉子工程里面的
  • 第11章 分布式事务解决方案

    mini商城第11章 分布式事务解决方案 一 课题 分布式事务解决方案 二 回顾 1 MongoDB部署及应用 2 购物车功能实现 3 订单功能实现 三 目标 1 分布式事务 事务简介 本地事务讲解 不同场景下的分布式事务 2 分布式事务理
  • C++开发过程笔记~~持续更新~~

    文章目录 1 为什么只有 析构函数不论基类和派生类都用到了virtual关键字 2 c inline使函数实现可以在头文件中 避免多重定义错误 3 this gt 4 调用另一个cpp文件中函数 多个 cpp文件编译 5 有空看看开源项目g
  • 老猿学5G:融合计费场景的离线计费会话的Nchf_OfflineOnlyCharging_Update 更新操作过程

    前往老猿Python博文目录 一 Nchf OfflineOnlyCharging Update消息交互过程 Nchf OfflineOnlyCharging Update消息是是5G融合计费的离线计费中CHF为SMF中的NF功能体CTF提
  • 用css 添加手状样式,鼠标移上去变小手,变小手

    用css 添加手状样式 鼠标移上去变小手 变小手 cursor pointer 用JS使鼠标变小手onmouseover 鼠标越过的时候 nm use ver this style cursor hand cursor其他取值 auto 标
  • OpenGL学习笔记(六)-模型加载

    参考网址 LearnOpenGL 中文版 哔哩哔哩教程 第三章 模型加载 3 1 Assimp 1 Assimp能够导入多种模型文件格式 将所有的模型数据加载至Assimp的通用数据结构中 我们就能够从Assimp的数据结构中提取我们所需的
  • linux操作系统下根目录下各目录的作用

    bin 二进制文件 普通用户和超级用户使用的命令 sbin 二进制文件 root用户也就是管理员使用的命令 普通用户没有权限 boot 系统启动的关键文件 dev 管理各个设备的文件 etc 所有程序的配置文件 home 用户家目录文件 l
  • 消息循环中的TranslateMessage函数和DispatchMessage函数

    TranslateMessage函数 函数功能描述 将虚拟键消息转换为字符消息 字符消息被送到调用线程的消息队列中 在下一次线程调用函数GetMessage或PeekMessage时被读出 函数原型 BOOL TranslateMessag
  • javanio应用场景,从理论到实践!

    直击面试 反正我是带着这些问题往下读的 说一下 JVM 运行时数据区吧 都有哪些区 分别是干什么的 Java 8 的内存分代改进 举例栈溢出的情况 调整栈大小 就能保存不出现溢出吗 分配的栈内存越大越好吗 垃圾回收是否会涉及到虚拟机栈 方法
  • moviepy音视频剪辑:颜色相关变换函数blackwhite、colorx、fadein/out、gamma_corr、invert_colors、lum_contrast、mask_color详解

    前往老猿Python博文目录 注意 本文为收费专栏文章 对应免费专栏文章为 moviepy音视频剪辑 颜色相关变换函数blackwhite colorx fadein out gamma corr invert colors lum con
  • Java 匿名对象

    一 简介 1 1 含义 没有名字的对象 以常规的创建对象的方法 AtomicInteger atomicInteger new AtomicInteger 100000 格式 类名 变量名 new 类名 这样就完成了对象的创建 注意 内可以
  • windows系统启动服务一直不成功,查看windows日志方法

    今天遇到一个问题 windows系统部署了spring cloud的服务 手动执行start bat文件可以启动服务 用服务的方式启动就一直启动不了 通过 控制面板 gt 管理工具 在 事件查看器 gt windows日志 gt 应用程序
  • 遮罩和蒙版有什么区别,视频遮罩怎么用

    在制作短视频时 好多小伙伴分不清遮罩与蒙版的区别 甚至有的人认为它们就是一个东西 要说起来 这两个看似一样的概念 其实还是有很大的区别 今天就来带各位了解一下遮罩和蒙版有什么区别 视频遮罩怎么用 希望对各位认识并理解蒙版和遮罩有一定的帮助
  • 根据java实体类生成创建表sql步骤

    根据java实体类生成创建表sql步骤 根据java实体类生成创建表sql语句时 方法是利用java反射 AOP注解 主要步骤如下 1 注解类 一般在生成表的时候 需要表名 主键名 字段名 对应到注解上至少要体现出这三部分 1 1表名 主键
  • 【Flutter 组件】004-基础组件:图片及 ICON

    Flutter 组件 004 基础组件 图片及 ICON 一 图片 1 Image 概述 Flutter 中 我们可以通过 Image 组件来加载并显示图片 Image 的数据源可以是 asset 文件 内存以及网络 Image 是一个用于
  • FLINK SQL实战案例之商品销量实时统计

    问题导读1 本文的业务包含哪些流程 2 本文难点在什么地方 3 如何通过flink sql实现商品销量实时统计 1 案例背景介绍互联网电商往往需要对订单商品销量实时统计 用于实时大屏展示 库存销量监控等等 本文主要介绍如何通过flink s
  • Vim/Vi中保存文件并退出编辑器

    Vim Vi模式 启动Vim编辑器时 处于正常模式 在这种模式下 可以使用vim命令并浏览文件 0 打开package json 终端命令vim package json 1 进入编辑模式 按 i键 2 按 Esc可返回正常模式 3 打开文
  • 如何给数据库中的表插入数据?

    R星校长 为表的所有字段插入数据 向表中插入数据最简单的方法就是使用INSERT语句 INSERT语句需要你声明要插入内容的表 table 名和内容 values 语法规则为 INSERT INTO 表名 字段名 VALUES 内容 举个例
  • uni-app引入web3在真机运行下兼容性处理方法

    uni app开发跨平台应用程序 项目搭建主要前端框是Uni app Vue3 TS Vite 项目搭建参考文章Uni app Vue3 TS Vite 创建项目 Hbuilderx版本是3 6 17 安装web3 yarn add web

随机推荐