Python:数据对象或类

arg*_*g20 5 python dictionary class

我喜欢所有用于抓取网站的python库,我正在尝试使用BeautifulSoup和IMDB来获取乐趣.

当我来自Java时,我将一些Java实践合并到我的编程风格中.我正在尝试获取某个电影的信息,我可以创建一个Movie类,也可以只使用带有键属性的字典.

我的问题是,当一个类只包含数据而且几乎没有行为时,我应该只使用字典吗?在其他语言中创建类型将帮助您实施某些限制,并且由于类型检查IDE将帮助您编程,在python中并非总是这样,所以我该怎么办?

我是否应该只在有行为和数据的情况下创建一个类?或者创建一个电影类,即使它可能只是一个数据容器?

这一切都取决于你的模型,在这种特殊情况下,任何一个都很好,但我想知道什么是一个好的做法.

Joh*_*ooy 6

使用类来存储属性是很好的.您也不妨使用namedtuple代替

dict和class之间的主要区别在于您访问属性[]vs .和inheritence的方式.

instance.__dict__dict毕竟只是一个

如果您愿意,您甚至可以为所有这些类型的对象使用单个类

class Bunch:
    def __init__(self, **kwargs):
        self.__dict__.update(kwargs)

movie = Bunch(title='foo', director='bar', ...)
Run Code Online (Sandbox Code Playgroud)

  • 另一方面,它也很好(对于每个参与者来说都更容易)使用现有的数据结构来保存数据.另外,`namedtuple`很棒,但是一些用例不能与其不变性相提并论. (4认同)