在类中使用方法之间的属性

时间:2013-09-12 08:39:59

标签: python class attributes

我有一个包含三个具有不同属性的函数的类:

 class Weather:
        def __init__(year,month,day):
            #do something with year, month and day
        def crops(beans,wheat):
            #do something with beans and wheat
        def vegetables(tomato,garlic)
            #do something with tomato, garlic and beans

我需要在beanscrops中使用vegatables,但bean是crops的属性。这是可能的还是我需要在beans中包含__init__才能在多个函数中使用它?

2 个答案:

答案 0 :(得分:2)

是的,在__init__你会做类似

的事情
self.beans = beans

这意味着bean成为一个类变量,并且在所有类方法中都可用。

Here's关于python中的类的一些文档

答案 1 :(得分:1)

beans crops()函数的“属性”。它是该功能的参数。您可以通过执行以下操作使其成为Weather 对象的属性:

def crops(self, beans):
    self.beans = beans

您可以使用任何方法执行此操作,而不仅仅是__init__()

可以在vegetables()内使用以下内容访问:

def vegetables(self, tomatoes):
    print self.beans

只要您在crops()之前至少拨打一次vegetables()

你是否应该在这些方法中执行此操作,而不是在__init__()中初始化共享数据是一个设计问题,对于一个人为的例子是不可能回答的。

此外,您拥有的所有方法都应该以{{1​​}}作为第一个参数。 (请参阅每个Python教程。)除非您的目标是将它们称为self,即将该类仅用作命名空间,但这很令人困惑。最好将它们作为模块级函数使用,或使用Weather.crops(...)使您的意图清晰。