我知道你可以做,例如:
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
我知道语法不对,但我希望你能理解。
答案 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
)。