Python中对象内部的数据结构

时间:2014-05-05 10:33:49

标签: python class object data-structures

我知道你可以做,例如:

class Node(object):
   __slots__ = 'data', 'left', 'right'

   def __init__(self, data=None, left=None, right=None):
      self.data  = data
      self.left  = left
      self.right = right

但是我怎么能做某事才能获得,例如:

class Node(object):
   __slots__ = 'data', 'left', 'right'
   data.struct = 'hour', 'min', 'day'

   def __init__(self, data=None, left=None, right=None):
      self.data  = data
      self.left  = left
      self.right = right
      self.data.hour = hour
      self.data.min = min
      self.data.day = day

我知道语法不对,但我希望你能理解。

1 个答案:

答案 0 :(得分:0)

您需要为data定义包含成员hours, min, day的类。您可以使用方便的工厂collections.namedtuple进行基本使用:

#!/usr/bin/env python

import collections

Time_tuple = collections.namedtuple("Time", ['hour', 'min', 'day'])


class Node(object):
    def __init__(self, time=(None, None, None)):
        self.time = Time_tuple(*time)

node = Node()
print repr(node.time.day)

other_node = Node((23, 50, 1))
print other_node.time.hour

请注意,这使您无法控制传递给构造函数的值是否有效。如果您想添加这样的支票,则应编写自己的Time_tuple课程,如果数据不正确,则提出ValueError(例如,小时为42)。