Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从字符串创建子类_Python - Fatal编程技术网

Python 从字符串创建子类

Python 从字符串创建子类,python,Python,使用Python,我希望实现以下目标 fruit = Fruit() fruit.add_item('apple') fruit.apple.add_color('red') fruit.apple.add_taste('sweet') fruit.add_item("lemon") fruit.lemon.add_color('yellow') fruit.lemon.add_taste('bitter') i、 我需要从一个字符串创建一个子类。这似乎是一种新的设计模式,可能是一种常见的设计

使用Python,我希望实现以下目标

fruit = Fruit()
fruit.add_item('apple')
fruit.apple.add_color('red')
fruit.apple.add_taste('sweet')
fruit.add_item("lemon")
fruit.lemon.add_color('yellow')
fruit.lemon.add_taste('bitter')

i、 我需要从一个字符串创建一个子类。这似乎是一种新的设计模式,可能是一种常见的设计模式。这将如何实现

看起来并不需要创建任何子类。而是:

class OneFruit(object):
    def add_color(self, color):
        self.color = color
    def add_taste(self, taste):
        self.taste = taste

class Fruit(object):
    def add_item(self, name):
        setattr(self, name, OneFruit())

这个简单的代码符合您的示例。如果您想要的是非常不同的东西,请制作一个适当不同的示例,并相应地编辑您的问题!-)

为什么
apple
lemon
需要成为子类?在我看来,它们只是一种类型的实例
setattr(self,name,Fruit())
可以实现这一点,而无需每次都生成新类..我认为您要做的是创建一个这样的水果:
lemon=Fruit()
,然后执行
lemon.color=yellow
生成器模式可以稍微清理一下,但大多数情况下,你需要用更加面向对象的术语重新思考问题
lemon
apple
应该是
Fruit
的例子。这个例子可能考虑不周。这主要是我所追求的模式。Dict/List肯定能做到这一点,但对于这段代码,我非常有意地想使用OO。我实际上试图摆脱的结构是一个或多个dict列表(以及更深层的长文本条目)是的。谢谢只是试了一下。这就是我想要的。