我有一个包含三个具有不同属性的函数的类:
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
我需要在beans
和crops
中使用vegatables
,但bean是crops
的属性。这是可能的还是我需要在beans
中包含__init__
才能在多个函数中使用它?
答案 0 :(得分:2)
答案 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(...)
使您的意图清晰。