gpt4 book ai didi

静态方法中的python类变量

转载 作者:行者123 更新时间:2023-12-05 08:44:01 25 4
gpt4 key购买 nike

[更新]:完整代码

我总是对 pyhton 的静态方法感到困惑但根据this (最后一个答案),它应该工作!

获取错误:

AttributeError: class MyConnection has no attribute 'myuser'

class MyConnection:
def __init__(self, hostname, port, user, password):
myhostname = hostname
myport = port
myuser = user
mypassword = password
isisessid = None

@staticmethod
def connect():
my_session = MyConnection()

headers = {'content-type': 'application/json'}
headers['Authorization'] = 'Basic ' + string.strip(
base64.encodestring(MyConnection.myuser + ':' + MyConnection.mypassword))

body = json.dumps({'username': MyConnection.myuser, 'password': MyConnection.mypassword,
'services': ['platform', 'namespace']})

uri = '/session/1/session'

connection = httplib.HTTPSConnection(MyConnection.myhostname, MyConnection.myport)
connection.connect()

try:
connection.request('POST', uri, body, headers)
response = connection.getresponse()
my_session.isisessid = MyConnection.extract_session_id(
response.getheaders())
except Exception, e:
print e
connection.close()
except httplib.BadStatusLine, e:
print e
connection.close()

return my_session

最佳答案

如果属性是静态的,不要在初始化方法中初始化它们,在类级别外部声明它们,而不是在方法级别。

但是为什么要在初始化器中初始化类属性呢?您创建的每个实例都会覆盖它们的值!

我相信您混淆了instance 属性和class 属性的用途。为什么不尝试只使用实例属性?综合考虑,拥有静态数据不是一个好主意。例如:

class MyConnection:
def __init__(self, hostname, port, user, password):
self.myhostname = hostname
self.myport = port
self.myuser = user
self.mypassword = password
@staticmethod
def connect():
my_session = MyConnection()
print my_session.myuser # just an example

关于静态方法中的python类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com