Python变量声明学习python,并有一些基本的疑虑。我看过变量声明(路径在这里)class writer:
path = ""有时,没有明确的声明,但初始化__init__。def __init__(self, name):
self.name = name我理解的目的__init__,但是建议在任何其他函数中声明变量。2.如何创建变量来保存自定义类型?class writer:
path = "" # string value
customObj = ??
3 回答

一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
没有必要在Python中声明新变量。如果我们在谈论函数或模块中的变量,则不需要声明。只需为您需要的名称指定一个值:mymagic = "Magic"
。Python中的变量可以包含任何类型的值,但您不能限制它。
您的问题特别询问了类,对象和实例变量。创建实例变量的惯用方法是在__init__
方法中而不是其他地方 - 虽然您可以在其他方法中创建新的实例变量,或者甚至在不相关的代码中,但这只是一个坏主意。它会使你的代码难以推理或维护。
例如:
class Thing(object): def __init__(self, magic): self.magic = magic
简单。现在这个类的实例有一个magic
属性:
thingo = Thing("More magic")# thingo.magic is now "More magic"
在类的名称空间中创建变量本身会导致不同的行为。它在功能上有所不同,只有在您有特定原因时才应该这样做。例如:
class Thing(object): magic = "Magic" def __init__(self): pass
现在尝试:
thingo = Thing()Thing.magic = 1# thingo.magic is now 1
要么:
class Thing(object): magic = ["More", "magic"] def __init__(self): passthing1 = Thing()thing2 = Thing()thing1.magic.append("here")# thing1.magic AND thing2.magic is now ["More", "magic", "here"]
这是因为类本身的名称空间与从其创建的对象的名称空间不同。我会留给你研究一下。
带回家的消息是,惯用的Python是(a)初始化__init__
方法中的对象属性,(b)根据需要记录类的行为。你不需要为你所写的所有东西都找到完整的Sphinx级文档的麻烦,但至少有一些关于你或其他人可能需要提取它的细节的评论。

精慕HU
TA贡献1845条经验 获得超8个赞
这可能晚了6年,但在Python 3.5及更高版本中,您声明了一个这样的变量类型:
variable_name: type_name
或这个:
variable_name # type: shinyType
所以在你的情况下(如果你CustomObject
定义了一个类),你可以这样做:
customObj: CustomObject
添加回答
举报
0/150
提交
取消