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

python基础问题记录

文章目录

  • 前言
  • 一、python中类的注意点
  • 二、模块与包
    • 1. 模块
    • 2. 包
  • 总结


前言

本专栏主要记录python中一些语法问题。

一、python中类的注意点

  1. 类属性:在类中定义的属性
    在类中直接写明的变量是类属性,属于公共属性。

    • 访问:类属性可以通过类或者类的实例访问
    • 修改:通过类对象修改的属性,在后续新实例对象会修改,已经创建的实例对象不会修改。
  2. 方法:在类中定义的函数(方法)

    • 实例方法:self作为首个参数。
      • 通过实例对象调用时:自动将当前实例作为self传入。
      • 通过类调用时,需手动把类对象传递给self。
    • 类方法:使用装饰器@classmethod修饰。
      • 类方法内不可以直接调用实例方法,也不可以调用实例变量。
      • 类和实例都可以直接调用类方法。
    • 静态方法:@staticmethod 修饰,是一个 Python 的一个内置装饰器,用于定义静态方法。静态方法是类中的方法,与类的实例无关,也无法访问类的实例变量或其他实例方法。静态方法通过类名调用,而不是通过实例调用。
    • 特殊方法:前后有两个下划线“_名字_”,特殊方法一般在特殊时刻自动调用。如__init__会在创建对象时自动调用。
  3. 双下划线与单下划线
    双下划线的属性或者方法,只能在类中使用,在外部使用会直接报异常,单下划线开头的不建议外部使用,但实际仍可外部调用。

  4. 装饰器
    装饰器能够使得不影响原有函数功能的基础上,添加新的功能。

    • @property:可以将方法使用类似属性的方式调用。
    class MyClass: _name = 1@propertydef name(self):return self._name
    m = MyClass()
    print(m.name)
    
    • @属性名.setter给属性赋值

二、模块与包

1. 模块

模块化指将一个完整的程序分解为一个一个小的模块,通过将模块组合,搭建出一个完整的程序

  • 不采用模块化,统一将所有的代码编写到一个文件中
  • 采用模块化,将程序分别编写到多个文件中

模块化的优点:方便开发、方便维护、模块可复用

python中一个py文件就是一个模块,要想创建模块,实际上就是创建一个python文件

2. 包

包也是一个模块

普通的模块就是一个py文件,而包是一个文件夹

  • 当模块中代码过多时,或者一个模块需要被分解为多个模块时,这时就需要使用到包
  • 包中必须要一个一个 init.py文件,这个文件中导入有必要的内容,不要做没必要的运算
  • init.py相关内容:_init_.py 的作用
    • 标识包:_init_.py 文件的存在表明包含它的目录是一个包。没有这个文件的目录不会被 Python 解释器识别为包。

    • 执行初始化代码:当包被导入时,_init_.py 中的代码会自动执行。这可以用来初始化包、设置变量、导入子模块等。

    • 控制导入行为:可以在 _init_.py 中定义 _all_ 列表来控制 from package import * 语句的行为。

总结

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

相关文章:

  • Qt之饼图(Pie Graph)
  • Java项目Git提交规范
  • flink-触发器Trigger和移除器Evictor
  • 【力扣 28】找出字符串中第一个匹配项的下标 C++题解(字符串匹配)
  • 软件构造 | Design Patterns for Reuse and Maintainability
  • Python数据分析-股票分析和可视化(深证指数)
  • Linux如何安装openjdk1.8
  • 【LLVM】LTO学习
  • 事务的特性-原子性(Atomicity)、一致性(Consistency)、隔离性(Asolation)、持久性(Durability)
  • redis哨兵模式(Redis Sentinel)
  • 【牛客】牛客小白月赛97 题解 A - E
  • Spring Boot中泛型参数的灵活运用:最佳实践与性能优化
  • MySQL建表时的注意事项
  • Advanced RAG 09:『提示词压缩』技术综述
  • (13)DroneCAN 适配器节点(二)
  • 摸鱼大数据——Spark基础——Spark环境安装——Spark Local[*]搭建
  • 函数内部结构分层浅析(从MVC分层架构联想)
  • 【three.js案例二】时空隧道
  • 动手学深度学习(Pytorch版)代码实践 -计算机视觉-48全连接卷积神经网络(FCN)
  • 【Python游戏】猫和老鼠
  • 【无标题】c# WEBAPI 读写表到Redis
  • 【剑指Offer系列】53-0到n中缺失的数字(index)
  • docker compose部署zabbix7.0官方方法快速搭建
  • 分库分表之后如何设计主键ID(分布式ID)?
  • 秋招突击——6/28、6.29——复习{数位DP——度的数量}——新作{}
  • Spring Boot中使用Thymeleaf进行页面渲染
  • 恢复策略(下)-事务故障后的数据库恢复、系统故障后的数据库恢复(检查点技术)、介质故障后的数据库恢复
  • 如何知道docker谁占用的显卡的显存?
  • wps linux node.js 加载项开发,和离线部署方案
  • 红队内网攻防渗透:内网渗透之内网对抗:横向移动篇Kerberos委派安全非约束系约束系RBCD资源系Spooler利用