使输入行为像一个类

时间:2017-08-19 05:11:32

标签: python string class input

我已经为例如创建了一个课程。 [Errno 10013] An attempt was made to access a socket in a way forbidden by its access permissions。我已经制作了预设课程。

fruit

所以我可以Apple = Fruit("Apple","red","small") 这样做,以便它返回红色。

如何向用户询问Apple.color并将其与班级相关联?

fruit

如何使my_fruit = input("Choose a fruit.") my_fruit = Apple #but only as a string 返回红色,类似于创建的Apple类。我是否需要将此作为一个强者转换为一个类?

2 个答案:

答案 0 :(得分:3)

在Python 2中,以下内容适用于我认为您的意图:

class Fruit(object):

    def __init__(self, name, color, size):
        self.name = name
        self.color = color
        self.size = size


Apple = Fruit('Apple', 'red', 'small')

fruit_class = input('Choose type of fruit: ')
print(fruit_class.color)

然而,Python 3中的函数input的行为类似于Python 2中的raw_input。Python 3中没有像Python 2 input那样的函数。但是,如this post中所述,使用Python 3中的eval(input())可以实现相同的功能。

代码如下所示:

Apple = Fruit('Apple', 'red', 'small')

fruit_class = eval(input('Choose type of fruit: '))
print(fruit_class.color)

但是,使用eval是危险的,因为用户可以对系统执行任意代码。您期望的输入字符串值与要输入的用户之间的映射以及它们应映射到的类实例可以提供相同的用例。例如:

Apple = Fruit('Apple', 'red', 'small')

fruits = {
    'Apple': Apple,
}

fruit_class_type = input('Choose type of fruit: ')
print(fruits[fruit_class_type].color)

答案 1 :(得分:1)

通过输入创建课程的等级

我希望这段代码符合您的意图。我知道你想用输入函数创建一个具有颜色等属性的类的水果。所以我认为这可能是一个可能的解决方案。

class Fruit:
    def __init__(self, type, color, size):
        self.type, self.color, self.size = type, color, size


fruit1 = Fruit(
    input("Choose a type of fruit: "),
    input("Choose the color: "),
    input("Choose the size: "))

print("This is your fruit:")
print(fruit1.type, fruit1.color, fruit1.size)
  

输出

Choose a type of Fruit: Ananas
Choose the color: orange
Choose the size: big
This is your fruit:
Ananas orange big