是否有可能在python中有静态类变量或方法?这样做需要什么语法?
class Example(object):
def the_example(self):
itsProblem = "problem"
theExample = Example()
print(theExample.itsProblem)
Run Code Online (Sandbox Code Playgroud)
如何访问类的变量?我试过添加这个定义:
def return_itsProblem(self):
return itsProblem
Run Code Online (Sandbox Code Playgroud)
然而,这也失败了.
Python中的类和实例变量有什么区别?
class Complex:
a = 1
Run Code Online (Sandbox Code Playgroud)
和
class Complex:
def __init__(self):
self.a = 1
Run Code Online (Sandbox Code Playgroud)
使用呼叫:x = Complex().a在两种情况下都将x分配给1.
一个更深入的答案__init__(),self将受到赞赏.
type(obj)和之间有什么区别obj.__class__?有可能type(obj) is not obj.__class__吗?
我想编写一个在提供的对象上一般工作的函数,使用与另一个参数相同类型的默认值1.下面的#1或#2哪个变体会做正确的事情?
def f(a, b=None):
if b is None:
b = type(a)(1) # #1
b = a.__class__(1) # #2
Run Code Online (Sandbox Code Playgroud) 我有一个python应用程序,如下所示:
global_counter = 0
connections = {}
class SocketHandler():
currentid = 0
def open(self):
global global_counter
global connections
currentid = global_counter
global_counter += 1
connections[currentid] = self
print "WebSocket " + str(currentid) + " opened"
def on_close(self):
global connections
print "WebSocket " + str(currentid) + " closed"
del connections[currentid]
Run Code Online (Sandbox Code Playgroud)
我收到错误:
NameError: global name 'currentid' is not defined
Run Code Online (Sandbox Code Playgroud)
在"打开"和"on_close"的行上,我打印我打开/关闭连接.我在课堂上定义了它,为什么不在范围内.另外,我已经读过使用全局变量很糟糕,但我没有看到解决方法.有人可以指出我应该做什么吗?谢谢.
有关于如何从静态方法访问静态变量(如大量的回答这一个,和那一个,而关于这个主题的伟大的信息在这里),但我在与其他方向的麻烦:如何使用静态方法初始化静态变量.例如:
import os, platform
class A(object):
@staticmethod
def getRoot():
return 'C:\\' if platform.system() == 'Windows' else '/'
pth = os.path.join(A.getRoot(), 'some', 'path')
Run Code Online (Sandbox Code Playgroud)
最后一行给出了一个例外:NameError: name 'A' is not defined.如果我使用@classmethod而不是,则会发生同样的错误@staticmethod.
是否可以从类变量访问静态方法?
我正在学习课程,但不明白这一点:
class MyClass:
var = 1
one = MyClass()
two = MyClass()
print(one.var, two.var) # out: 1 1
one.var = 2
print(one.var, two.var) # out: 2 1
Run Code Online (Sandbox Code Playgroud)
我认为类变量可以被所有实例访问,为什么类变量不更新其所有实例?