为了账号安全,请及时绑定邮箱和手机立即绑定

Python变量声明

Python变量声明

慕的地6264312 2019-08-12 10:47:21
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级文档的麻烦,但至少有一些关于你或其他人可能需要提取它的细节的评论。


查看完整回答
反对 回复 2019-08-12
?
精慕HU

TA贡献1845条经验 获得超8个赞

这可能晚了6年,但在Python 3.5及更高版本中,您声明了一个这样的变量类型:

variable_name: type_name

或这个:

variable_name # type: shinyType

所以在你的情况下(如果你CustomObject定义了一个类),你可以这样做:

customObj: CustomObject


查看完整回答
反对 回复 2019-08-12
  • 3 回答
  • 0 关注
  • 552 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信