在Python增强版中创建和检索对象列表

2024-10-02 02:33:58 发布

您现在位置:Python中文网/ 问答频道 /正文

这篇文章是我上一篇文章(用Python创建和检索对象列表)的后续。你知道吗

我必须按以下方式修改代码:

脚本1

#!/usr/bin/python

class Porsche:
    """ class representing a Porsche """
    def __init__(self, color):      
        self.color = color


def create_porsche(parameter_1, parameter_2):
    myPorsche = Porsche(color = parameter_1)
    myPorsche2 = Porsche(color = parameter_2) 

create_porsche(parameter_1 = 'blue', parameter_2 = 'red')
porsche_container = (myPorsche, myPorsche2)

我想让porsche\u container=(myPorsche,myPorsche2)和我之前的脚本一样工作:

旧剧本1

#!/usr/bin/python

class Porsche:
    """ class representing a Porsche """
    def __init__(self, color):      
        self.color = color


myPorsche = Porsche(color = 'blue')
myPorsche2 = Porsche(color = 'red') 


porsche_container = (myPorsche, myPorsche2)

我该怎么做?你知道吗

rgds公司


Tags: self脚本binparameterinitusrcontainerdef
2条回答

create_porsche不返回任何内容,因此您不知道创建了什么。让它返回它创建的汽车列表,然后可以将其存储在全局变量中。你知道吗

def create_porsche(parameter_1, parameter_2):
    myPorsche = Porsche(color = parameter_1)
    myPorsche2 = Porsche(color = parameter_2) 

    return [ myPorsche, myPorsche2 ]

porsche_container = create_porsche(parameter_1 = 'blue', parameter_2 = 'red')

上面发布的代码不起作用的原因是变量myPorschemyPorsche2是在函数create_porsche中定义的,因此它们的作用域是该函数的。这意味着您无法在代码块之外看到或访问它们。如果您想了解它们,请使create_porsche返回它们。(注意:可以告诉Python它们应该是全局变量,也就是说,在使用global关键字的函数中没有作用域,但是除非必须这样做,否则不应该这样做。)


我不想在这里粗鲁,但是你读过Python教程吗?类似于Dive Into Python的内容可能会帮助您理解类似的内容(函数作用域和返回值)。你知道吗

下面是我关于如何创建Porsche对象并将它们添加到容器的介绍。你知道吗

class Porsche(object):
    def __init__(self, color):
        self.color = color

class PorscheCreator(object):
    def __init__(self):
        self._cars = []
    def create(self, *args, **kwargs):
        porsche = Porsche(*args, **kwargs)
        self._cars.append(porsche)
        return porsche
    def _get_cars(self):
        for each in self._cars:
            yield each
    cars = property(_get_cars)

creator = PorscheCreator()
myPorsche = creator.create('blue')
myPorsche2 = creator.create('red')     

在剧本2中:

from script1 import creator

for each in creator.cars:
     print car.color

相关问题 更多 >

    热门问题