【问题标题】:Java-like static class & method in PythonPython中的类Java静态类和方法
【发布时间】:2014-12-02 13:20:12
【问题描述】:

我是 Python 新手,我正在尝试在 Java 中实现类似于“静态”概念的东西。我在 Python 中尝试了多种方法(静态方法、全局方法等),但仍然无法使其正常工作……也许我在某些方面误解了它们……

总的来说,我想做的是:

  • 要获得由其他类共享的静态变量列表,例如:
    • 房间里的人的名字
    • 使用计算机的人的姓名
    • 最后一个使用计算机的人的姓名
  • 要使用静态函数/回调来更新这些变量,例如:
    • 有人到达/离开房间(从房间里的人的名字中添加/删除名字)
    • 更改计算机当前用户的姓名

所以从其他类中,我想访问这些变量并根据它们的值做出决定,比如:

class something():
 boolean IsComputerAvailable():
  if (Name of the person who is using the computer) == null:
   return true
  else:
   return false

或类似的东西......那么在 Python 中最好的方法是什么?

非常感谢! :)

【问题讨论】:

    标签: java python static


    【解决方案1】:

    我不确定是否理解房间里的人使用计算机的整个想法,但这是 python 中静态属性/方法的一个示例:

    class Test():
    
        static_attr1 = 2
    
        def __init__(self):
            pass
    
        @staticmethod
        def static_method(v):
            Test.static_attr1 = v
    

    然后这段代码:

    o1 = Test()
    o2 = Test()
    
    print "o1 static_attr : ", o1.static_attr1
    print "o2 static_attr : ", o2.static_attr1
    
    Test.static_method(3)
    
    print "o1 static_attr : ", o1.static_attr1
    print "o2 static_attr : ", o2.static_attr1
    

    将打印:

    o1 static_attr : 2
    o2 static_attr : 2
    o1 static_attr : 3
    o2 static_attr : 3
    

    【讨论】:

    • 我觉得你的staticmethod真的是伪装的classmethod
    猜你喜欢
    • 2014-09-24
    • 1970-01-01
    • 2016-06-14
    • 2018-03-07
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2021-08-11
    相关资源
    最近更新 更多