[英]Should class attribute be tree-like or flat?
我有一個類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
PEP 20 -- Python 之禪建議扁平化優於嵌套。
您可以使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.