python - 将枚举类型作为构造函数参数传递

标签 python enums constructor

我是 python 的新手,我想在函数内将枚举作为参数传递给构造函数。

编辑:我正在开发一个包含必须组织不同类型数据的类的程序,但大多数这些数据类型都可以以相同的方式处理。这些数据不会同时或按可预见的顺序全部添加。因此,我想保留相同的功能,只是改变构造函数存储数据的方式。让我们考虑这个更简单的例子:

假设我有一个枚举

from enum import Enum, auto

class HouseThing(Enum):
    people = auto()
    pets = auto()
    furniture = auto()

我有一个类 House,可以包含其中的部分或全部内容

class House():

    def __init__(self, address, people = None, pets = None, 
        furniture = None):
        self.address = address, 
        if self.people is not None:
            self.people = people

        etc....

现在我想要一个可以 build 新装修房屋的功能,但我想使用一个可以用于任何房屋的功能:

house_things = HouseThing.furniture

def make_house_with_some_house_things(neighborhood, house_things):
     neighborhood.append(House(house_things.name = house_things.name))

有没有一种方法可以在不首先测试哪种 HouseThing house_things 的情况下执行此操作? house_things.name 传递一个字符串,但我希望它能够将它用作关键字。

最佳答案

我不确定你到底想在这里实现什么,但为了解决这个难题:

首先,改变 House 以确定它传递的是什么:

class House():

    def __init__(self, address, *house_things):
        self.address = address
        for ht in house_things:
            if ht is HouseThings.people:
                self.people = ht
            elif ht is HouseThings.pets:
                self.pets = ht
            elif ht is HouseThings.furniture:
                self.furniture = ht
            else:
                raise ValueError('unknown house thing: %r' % (ht, ))

然后,将 make_house_with_some_house_things 更改为只传递给它的房子:

def make_house_with_some_house_things(neighborhood, house_things):
     neighborhood.append(House(house_things))

关于python - 将枚举类型作为构造函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48328957/

相关文章:

c++ - 在构造函数初始化列表中初始化 stringstream 引用成员

python - OpenCV匹配图像上的多个帧

c - enum 是常数还是常数变量或其他什么?在以下代码中出现错误

enums - 我可以用附加值扩展枚举吗?

c# - 如何在 NHibernate 中使用枚举?

java - 在Python中实例化类——设置属性

Java 构造函数被多次调用

python - 在没有任何数据的情况下添加流氓值时除以零错误

python - Pandas Dataframe 一次遍历两行

python - KNeighborsClassifier .predict() 函数不起作用