【发布时间】:2016-08-03 23:28:00
【问题描述】:
我正在尝试调用一个函数来初始化我的 global 类级变量。请注意,由于某种原因,我无法编写构造函数来完成这项工作。 (原因:我正在为 Tempest 写一个测试用例)
代码:
class my_class(ParentClass):
username = "abc"
password = "123"
hostname = self._get_hostname() # Error: self is undefined
hostname = _get_hostname() # Error: _get_hostname is undefined
def myFunct(self):
...
...
def _get_hostname(self):
...
...
在 python 中甚至可以用类函数初始化 global 类级变量吗?
注1:我也试过在_get_hostname()函数写完之后再进行hostname初始化,但是没用。
注意 2: 我可以在如下函数中执行 hostname 初始化:
def myFunction(self):
hostname = self._get_hostname()
# do something with hostname
...
但这会破坏使用 global 类级变量的全部目的。我想在其他函数中使用类级变量重用。
【问题讨论】:
-
构造函数使用
def __init__(self):,你得到的类定义后面的代码不是构造函数。 -
@xthestreams 亲爱的我已经提到我无法编写构造函数。
-
@InamTaj 为什么不将
_get_hostname(cls):设为类方法,然后像使用@classmethod装饰器一样? -
没有在类定义中设置全局变量的情况。类定义中的代码在其模块加载时进行评估,因此尝试在那里设置变量与在模块级别的类外部定义它们一样有效。
-
@Serdmanczyk 我把它们称为全球是错误的。我的意思是类级变量。我已经编辑了我的问题。
标签: python python-2.7 oop python-3.x global-variables