NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • 教程

    • 安装
    • 流程控制与定义函数
    • 数据结构(类型)
    • 模块
    • 输入与输出
    • 错误与异常
    • 类
      • 定义
      • 实例化
      • 类变量与实例变量
      • 私有变量
      • 继承
        • 单继承
        • 多重继承
      • 结构体
    • 标准库
    • 虚拟环境和包
    • 开发环境
    • ORM - SQLAlchemy
  • Python
  • 教程
NipGeihou
2024-10-11
目录

类

# 定义

class ClassName:
    <语句-1>
    .
    .
    .
    <语句-N>

与 Java 一个文件一个类不同,python 的类定义在代码执行的必经之路上,

class MyClass:
    """一个简单的示例类"""
    i = 12345

    def f(self):
        return 'hello world'

# 静态调用 
MyClass.i
MyClass.f

# 实例化

>>> class Complex:
...     def __init__(self, realpart, imagpart):
...         self.r = realpart
...         self.i = imagpart

>>> x = Complex(3.0, -4.5)
>>> x.r, x.i
(3.0, -4.5)
  • 类中的 __init__ 函数即为构造函数

# 类变量与实例变量

class Dog:

    kind = 'canine'         # 类变量被所有实例所共享

    def __init__(self, name):
        self.name = name    # 实例变量为每个实例所独有

>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.kind                  # 被所有的 Dog 实例所共享
'canine'
>>> e.kind                  # 被所有的 Dog 实例所共享
'canine'
>>> d.name                  # 为 d 所独有
'Fido'
>>> e.name                  # 为 e 所独有
'Buddy'
  • 由此例子可知,类变量在类中直接声明,而实例变量需要在 init 函数中挂载到 self 参数中。

  • 约定实例方法的第一个参数名为 self ,作用类似于 Java 的 this

# 私有变量

使用 _ 开头的变量、方法名视为私有。

# 继承

# 单继承

class DerivedClassName(BaseClassName):
    <语句-1>
    .
    .
    .
    <语句-N>
  • 类似 Java: class DerivedClassName extend BaseClassName

  • 继承的类是在其他模块下时:

class DerivedClassName(modname.BaseClassName):

# 多重继承

class DerivedClassName(Base1, Base2, Base3):
    <语句-1>
    .
    .
    .
    <语句-N>
  • 搜索从父类所继承属性的操作是深度优先、从左到右

# 结构体

from dataclasses import dataclass

@dataclass
class Employee:
    name: str
    dept: str
    salary: int
>>> john = Employee('john', 'computer lab', 1000)
>>> john.dept
'computer lab'
>>> john.salary
1000
上次更新: 2024/10/11, 23:55:46
错误与异常
标准库

← 错误与异常 标准库→

最近更新
01
iSCSI服务搭建
05-10
02
磁盘管理与文件系统
05-02
03
网络测试 - iperf3
05-02
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式