资讯专栏INFORMATION COLUMN

python 数据模型

Chao / 1007人阅读

摘要:数据模型数据模型是对框架的描述它规范了这门语言自身构建模块的接口这些模块包括但不限于序列迭代器函数类和上下文管理器解释器遇到特殊方法时会使用特殊方法去激活一些基本的对象操作这些特殊方法以双下划线开头以双下划线结尾例如比如的背后就是方法为了能

Python数据模型

数据模型是对Python框架的描述,它规范了这门语言自身构建模块的接口, 这些模块包括但不限于序列, 迭代器, 函数, 上下文管理器.

Python解释器遇到特殊方法时,会使用特殊方法去激活一些基本的对象操作,这些特殊方法以双下划线开头,以双下划线结尾(例如: __getitem__)

比如 obj[key]的背后就是__getitem__方法,为了能求得my_collection[key]的值, 解释器实际会调用my_collection.__getitem__(key)

ex1:__getitem__ 和 __len__方法
#!/usr/bin/env python
# coding=utf-8

import collections


Card = collections.namedtuple("Card", ["rank", "suit"])
class FrenchDeck:
    """
    通过实现特殊方法利用python数据模型的好处:
    1. 作为你类的用户, 他们不必去记住标准操作的各式名称("怎么得到元素的总和?.size()还是.length()还是别的什么")
    2. 可以更加方便的利用Python的标准库,比如random.choice函数,从而不用重复发明轮子.
    """
    ranks = [str(n) for n in range(2, 11)] + list("JQKA")
    suits = "spades diamonds clubs hearts".split()

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

    def __len__(self):
        return len(self._cards)

    def __getitem__(self, position):
        return self._cards[position]
beer_card = Card("7", "diamonds")
print(beer_card)
deck = FrenchDeck()
print(len(deck))  # 总牌数

print(deck[0])  # 第一张牌
print(deck[-1])  # 最后一张牌


from random import choice
print(choice(deck))  # 随机抽取

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42264.html

相关文章

  • 入门系列之Scikit-learn在Python中构建机器学习分类器

    摘要:使用该数据集,我们将构建机器学习模型以使用肿瘤信息来预测肿瘤是恶性的还是良性的。我们将使用函数来确定机器学习分类器的准确性。您已成功构建了第一台机器学习分类器。现在,您可以使用在中加载数据组织数据训练预测和评估机器学习分类器。 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由信姜缘 发表于云+社区专栏 介绍 机器学习是计算机科学、人工智能和统计学的研究领域。机器学...

    Null 评论0 收藏0
  • Python学习之路17-Django入门

    摘要:编程从入门到实践笔记。执行命令后,项目的根目录下会多出一个名为的数据库文件。下面创建一个主题类用户学习的主题返回模型的字符串表示类是中的一个定义了模型基本功能的类。这种交互式环境称为,常用语测试项目和排除故障。 《Python编程:从入门到实践》笔记。从本篇开始将是该书的最后一个项目,将用3篇文章来介绍Django的基础。完成一个学习笔记的小网站。 1. 前言 在本篇中,我们将: 用...

    shadowbook 评论0 收藏0
  • python Copula如何绘制散点模型

      这篇文章的主要目的,是给大家讲解一下,关于python Copula如何进行绘制散点模型的相关实例,具体的代码下面给大家列出来了,有问题的小伙伴,可以仔细的进行阅读下文哦。  一、使用copula生成合成数据集(synthetic dataset)  1.三维数据描述  建立一个三维数据表,查看三维数据的散点图:  fromcopulas.datasetsimportsample_trivar...

    89542767 评论0 收藏0
  • 使用DeepLab进行语义分割

    摘要:介绍是谷歌使用基于开发的语义分割模型,至今已更新个版本。最新版本是,在此模型中进一步将深度可分离卷积应用到孔空间金字塔池化和解码器模块,从而形成更快,更强大的语义分割编码器解码器网络。 介绍 showImg(https://segmentfault.com/img/bVbnw9d?w=1860&h=398); DeepLab是谷歌使用tensorflow基于CNN开发的语义分割模型,至...

    lavnFan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<