猿问

Python变量声明

Python变量声明

学习python,并有一些基本的疑虑。

我看过变量声明(路径在这里)

class writer:
    path = ""

有时,没有明确的声明,但初始化__init__

def __init__(self, name):
    self.name = name

我理解的目的__init__,但是建议在任何其他函数中声明变量。

2.如何创建变量来保存自定义类型?

class writer:
    path = "" # string value
    customObj = ??



慕的地6264312
浏览 553回答 3
3回答

一只萌萌小番薯

没有必要在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

这可能晚了6年,但在Python 3.5及更高版本中,您声明了一个这样的变量类型:variable_name: type_name或这个:variable_name # type: shinyType所以在你的情况下(如果你CustomObject定义了一个类),你可以这样做:customObj: CustomObject
随时随地看视频慕课网APP

相关分类

Python
我要回答