如何构造一个可以有多个“子属性”的Python类

问题描述 投票:0回答:1

我有一个在 IT 部门工作时运行的 Web 应用程序。它只显示可供收集的笔记本电脑。总部看到了它,希望我构建它,以便它可以在多个站点上使用,其中一些站点有多个校区。我进行了设置,因此站点的设置只是全局变量,它们被保存到 .ini 文件中并在应用程序启动时加载。现在这不起作用,我决定将这些设置属性设置为一个类,并根据客户端转到的路径创建该类的实例并从 .ini 文件的部分加载属性的值。这看起来很简单,但是由于并非每个站点都有多个校区,因此我需要以某种方式不加载不存在的信息。我什至不确定我正在寻找的内容是否被调用,所以我无法进行足够好的搜索来查看这个问题是否已经解决。下面是一些关于我想要做什么的代码:

# Site class
class site:
  name = "" # Name of the site
  siteID = "" # Site ID (also path of site specific noticeboard).
  key = "" # Helpdesk API Key
  url = "" # Helpdesk URL
  campusCount = "" # Number of campuses
    XCampusName = "" # Name of campus "X".
    XCampusApprover = "" # Name of campus "X" return approver.
  collectionName = "" # Name of collection status in helpdesk.
  approvalName = "" # Name of approval status in helpdesk.

我想我可能需要一个二级课程,其中包含校园名称和授权退回设备的人的姓名,以某种方式链接到站点实例,但我不知道该称呼它或如何表达它以便能够通过谷歌搜索它。作为一个初学者,这样做是因为它让我的生活更轻松,我什至不确定这是否是正确的方法。任何信息都会有帮助。

干杯!

python class properties subclass
1个回答
0
投票

您正在讨论的方法很好。您需要在其中创建两个名为

Site
Campus
的独立类。然后,使用
campuses
作为
Site
类的实例变量来引用
Campus
类。

这是实现:

class Campus:
    def __init__(self, name, approver):
        self.name = name
        self.approver = approver

    def __str__(self):
        return self.name

class Site:
    def __init__(self, name, site_id, key, url, collection_name, approval_name):
        self.name = name
        self.site_id = site_id
        self.key = key
        self.url = url
        self.collection_name = collection_name
        self.approval_name = approval_name
        self.campuses = []

    def add_campus(self, campus):
        self.campuses.append(campus)

    def get_campuses_count(self):
        return len(self.campuses)

现在,定义站点类别,并添加任意数量的校园

site1 = Site("Site1", "ID1", "Key1", "URL1", "CollectionName1", "ApprovalName1")
campus1 = Campus("CampusName1", "Approver1")
site1.add_campus(campus1)
print(site1.campuses[0])  # will print "CampusName1"
print(site1.get_campuses_count())  # will print 1
© www.soinside.com 2019 - 2024. All rights reserved.