前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >孤陋寡闻了,Python中类竟可以像列表一样操作

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

作者头像
读懂原理
发布2022-12-18 16:30:47
2230
发布2022-12-18 16:30:47
举报
文章被收录于专栏:给点知识给点知识

孤陋寡闻了

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 代码截图

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 给点知识 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档