zl程序教程

您现在的位置是:首页 >  后端

当前栏目

孤陋寡闻了,Python中类竟可以像列表一样操作

Python列表 操作 可以 一样 中类
2023-06-13 09:15:59 时间

孤陋寡闻了

Python中类竟可以像列表一样操作

小知识

01

FOOTBALL WORLD CUP

1 问题描述

如何让一个类A也可以以列表的方式操作,通过len(A)获取长度,通过A[1]获取1坐标的值

2 最佳答案

1. 加入魔法方法__len__(self) 通过len(A)获取长度

2. 加入魔法方法__getitem__(self, index) 得到下表操作

FOOTBALL WORLD CUP

3 详细介绍

这里使用一个类构成一副扑克牌。

1. collections.namedtuple: 用以构建只有少数属性没有方法的对象, Python2.6开始加入的。

4 代码演示

import collections

# 创建一个对象

Card = collections.namedtuple('Card',['rank', 'suit'])

# 构建一个扑克牌类

class FrenchDeck:

# 构建A-K牌

ranks = [str(n) for n in range(2, 11)] + list('JQKA')

suits = "spades diamonds clubs heards".split()

# 初始化列表

def __init__(self) -> None:

self._cards = [Card(rank, suit) for suit in FrenchDeck.suits for rank in FrenchDeck.ranks]

# 定义魔法方法

def __len__(self):

return len(self._cards)

def __getitem__(self, position):

return self._cards[position]

if __name__ == '__main__':

fr = FrenchDeck()

# 获取长度

print(len(fr))

# 通过下标获取值

print(fr[3])

5 代码截图