我已经为例如创建了一个课程。 [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类。我是否需要将此作为一个强者转换为一个类?
答案 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