别院牧志知识库 别院牧志知识库
首页
  • 基础

    • 全栈之路
    • 😎Awesome资源
  • 进阶

    • Python 工匠系列
    • 高阶知识点
  • 指南教程

    • Socket 编程
    • 异步编程
    • PEP 系列
  • 面试

    • Python 面试题
    • 2025 面试记录
    • 2022 面试记录
    • 2021 面试记录
    • 2020 面试记录
    • 2019 面试记录
    • 数据库索引原理
  • 基金

    • 基金知识
    • 基金经理
  • 细读经典

    • 德隆-三个知道
    • 孔曼子-摊大饼理论
    • 配置者说-躺赢之路
    • 资水-建立自己的投资体系
    • 反脆弱
  • Git 参考手册
  • 提问的智慧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
首页
  • 基础

    • 全栈之路
    • 😎Awesome资源
  • 进阶

    • Python 工匠系列
    • 高阶知识点
  • 指南教程

    • Socket 编程
    • 异步编程
    • PEP 系列
  • 面试

    • Python 面试题
    • 2025 面试记录
    • 2022 面试记录
    • 2021 面试记录
    • 2020 面试记录
    • 2019 面试记录
    • 数据库索引原理
  • 基金

    • 基金知识
    • 基金经理
  • 细读经典

    • 德隆-三个知道
    • 孔曼子-摊大饼理论
    • 配置者说-躺赢之路
    • 资水-建立自己的投资体系
    • 反脆弱
  • Git 参考手册
  • 提问的智慧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 辨析

  • Sockets编程

  • Django

  • stackoverflow

  • Flask

  • 全栈之路

    • 基础篇

    • 进阶篇

    • 面向对象

      • Python 全栈之路系列之面向对象类成员特性
      • Python 全栈之路系列之面向对象成员修饰符
      • Python 全栈之路系列之面向对象运算符重载
      • Python 全栈之路系列之面向对象进阶及类成员
      • Python 全栈之路系列之面向对象基础
      • Python 全栈之路系列之面向对象特殊成员
        • 类的特殊成员之 call
        • 类的特殊成员之 getitem、setitem、delitem
        • 类的特殊成员之 dict
        • 类的特殊成员之 iter
    • 网络编程

    • 操作系统

    • 标准库

    • 第三方库

    • Python 全栈之路
  • 面试

  • 代码片段

  • 异步编程

  • 😎Awesome资源

  • PEP

  • Python工匠系列

  • 高阶知识点

  • Python 学习资源待整理
  • 设计模式

  • 好“艹蛋”的 Python 呀!
  • FIFO | 待学清单📝
  • pip 安装及使用
  • 数据分析

  • 源码阅读计划

  • OOP

  • 关于 python 中的 setup.py
  • 并行分布式框架 Celery
  • 七种武器,让你的代码提高可维护性
  • 使用 pdb 调试 Python 代码
  • 每周一个 Python 标准库
  • 🐍Python
  • 全栈之路
  • 面向对象
佚名
2020-05-23
目录

Python 全栈之路系列之面向对象特殊成员

# 类的特殊成员之 call

#!/usr/bin/env python
# _*_coding:utf-8 _*_

class SpecialMembers:

    # 类的构造方法
    def __init__(self):
        print("My Blog is Url: http://ansheng.me")

    # 对象的构造方法
    def __call__(self):
        print("My Name is: Ansheng")

# 创建一个对象,并且执行类的构造方法
obj = SpecialMembers()

# 执行对象的构造方法
obj()

# 先执行类的构造方法,然后在执行对象的构造方法
SpecialMembers()()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

输出

ansheng@Darker:~$ python3 /home/ansheng/文档/Python_code/sublime/Week06/Day04/s2.py
My Blog is Url: http://ansheng.me
My Name is: Ansheng
My Blog is Url: http://ansheng.me
My Name is: Ansheng
1
2
3
4
5

# 类的特殊成员之 getitem、setitem、delitem

#!/usr/bin/env python
# _*_coding:utf-8 _*_

class SpecialMembers:

    # 当执行obj['value']的时候就会自动执行__getitem__方法,并且把对象括号内的值当做__getitem__的值
    def __getitem__(self, item):
        print(item)

    def __setitem__(self, key, value):
        print(key, value)

    def __delitem__(self, key):
        print(key)

# 创建一个对象
obj = SpecialMembers()

# 自动执行__getitem__方法
obj['value']

# 自动执行__setitem__方法
obj['k1'] = "values"

# 自动执行__delitem__方法
del obj['key']
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

输出

ansheng@Darker:~$ python3 /home/ansheng/文档/Python_code/sublime/Week06/Day04/s2.py
value
k1 values
key
1
2
3
4

特殊的

#!/usr/bin/env python
# _*_coding:utf-8 _*_

class SpecialMembers:

    # 当执行obj['value']的时候就会自动执行__getitem__方法,并且把对象括号内的值当做__getitem__的值
    def __getitem__(self, item):
        print(item, type(item), "__getitem__")

    def __setitem__(self, key, value):
        print(key, value)

    def __delitem__(self, key):
        print(key)

# 创建一个对象
obj = SpecialMembers()

# 自动执行__getitem__方法
obj[1:3]  # __getslice__/__getitem__

# 自动执行__setitem__方法
obj[1:3] = [11, 22, 33]  # __setslice__/__setitem__

# 自动执行__delitem__
del obj[1:3]  # __delslice__/__delitem__
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

输出

ansheng@Darker:~$ python3 /home/ansheng/文档/Python_code/sublime/Week06/Day04/s2.py
slice(1, 3, None) <class 'slice'> __getitem__
slice(1, 3, None) [11, 22, 33]
slice(1, 3, None)
1
2
3
4

# 类的特殊成员之 dict

获取类或对象中的所有成员

#!/usr/bin/env python
# _*_coding:utf-8 _*_

class SpecialMembers:
    """
    类的注释
    """

    def __init__(self):
        self.Name = "Ansheng"
        self.Blog = "https://blog.ansheng.me"

# 获取类中的成员
print(SpecialMembers.__dict__)

# 创建一个对象
obj = SpecialMembers()

# 获取对象中的成员
print(obj.__dict__)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

输出

ansheng@Darker:~$ python3 /home/ansheng/文档/Python_code/sublime/Week06/Day04/s2.py
{'__weakref__': <attribute '__weakref__' of 'SpecialMembers' objects>, '__doc__': '\n    类的注释\n    ', '__module__': '__main__', '__dict__': <attribute '__dict__' of 'SpecialMembers' objects>, '__init__': <function SpecialMembers.__init__ at 0x7ff2af2d7598>}
{'Blog': 'https://blog.ansheng.me', 'Name': 'Ansheng'}
1
2
3

# 类的特殊成员之 iter

一个对象如果可以被for循环迭代时,说明对象中又__iter__方法,且方法中有yield值。

#!/usr/bin/env python
# _*_coding:utf-8 _*_

class SpecialMembers:

    def __iter__(self):
        yield 1
        yield 2
        yield 3

# 创建一个对象
obj = SpecialMembers()

# 如果执行for循环对象时,自动会执行对象的__iter__方法,此时的__iter__就是一个生成器
for i in obj:
    print(i)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

输出

ansheng@Darker:~$ python3 /home/ansheng/文档/Python_code/sublime/Week06/Day04/s2.py
1
2
3
1
2
3
4
编辑 (opens new window)
#编码#面向对象
上次更新: 2024-07-23, 01:00:43
Python 全栈之路系列之面向对象基础
Python 全栈之路系列之基于 socket 实现聊天机器人

← Python 全栈之路系列之面向对象基础 Python 全栈之路系列之基于 socket 实现聊天机器人→

最近更新
01
2025 面试记录
05-28
02
提升沟通亲和力的实用策略
03-26
03
工作
07-15
更多文章>
Theme by Vdoing | Copyright © 2019-2025 IMOYAO | 别院牧志
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式