我有一个student
类,属性为name
,如下所示:
class student(object):
def __init__(self, name):
self.name = name
现在,如果我想要一些子属性,例如名字,中间名和姓氏,我应该使用树状结构:
class student(object):
...
self.name.first = first_name
self.name.middle = middle_name
self.name.last = last_name
或将属性统一更改为3个属性
class student(object):
...
self.first_name = first_name
self.middle_name = middle_name
self.last_name = last_name
答案 0 :(得分:1)
PEP 20 -- The Zen of Python建议扁平比嵌套更好。
答案 1 :(得分:0)
您可以使用collections.namedtuple
:
from collections import namedtuple
class student(object):
name_type = namedtuple('name', ['first_name', 'middle_name', 'last_name'])
def __init__(self, name: name_type):
self.name = name
这样:
s = student(student.name_type('John', 'Jack', 'Smith'))
print(s.name.first_name, s.name.middle_name, s.name.last_name)
输出:
John Jack Smith