簡體   English   中英

類屬性應該是樹狀的還是扁平的?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM