我的问题与Is there a static constructor or static initializer in Python?相似。不过,我还是不太明白如何像在Java中那样实现静态构造函数:
public class TestBuilder {
private String uid;
private String name;
private double speed;
public static final TestBuilder SLEEPY;
public static final TestBuilder SPEEDY;
static {
SLEEPY = new TestBuilder("1", "slow test", 500.00);
SPEEDY = new TestBuilder("2", "fast test", 2000.00);
}
private TestBuilder(String uid, String name, double speed){
this.uid = uid;
this.name = name;
this.speed = speed;
}
public double getSpeed(){
return speed;
}
public String getUid() {
return uid;
}
public String getName() {
return name;
}
从另一个类调用javaTestBuilder.SLEEPY测试生成器访问填充的类。在
在python中,我尝试过:
^{pr2}$然后在另一个模块中我尝试了:
from examples.testbuilder import TestBuilder
import unittest
class Tester(unittest.TestCase):
def test_builder(self):
dummy = TestBuilder
ref = dummy.SPEEDY
sleepyid = dummy.lookupByName("slow test")
self.assertTrue(dummy.SPEEDY.__str__() == ref.__str__())
self.assertEqual(1, sleepyid)
但是,在dummy.lookupByName(“慢测试”)打电话来,不知道为什么。 这看起来像是一种生成类似于Java静态初始化器的功能的“pythonic”方法吗?有其他选择吗?在
问题是
lookupByName
不是静态的,需要隐式的第一个参数self
。在类定义中使用staticmethod修饰符:这个问题有关于静态方法的更多信息:Static methods in Python?
相关问题 更多 >
编程相关推荐