我正在研究文献中提供的自动编程技术,但只研究那些使用AI的技术.我能找到的唯一这样的技术是遗传编程.
有没有其他技术可以将程序员不需要知道如何解决的高级问题规范转换为工作程序?这些搜索技术被称为什么类别?
我注意到每个关于如何进行JavaScript继承的教程都是这样做的:
SubClass.prototype = new SuperClass();
Run Code Online (Sandbox Code Playgroud)
但是这将创建超类的单个实例并在子类的所有实例之间共享它.
问题是我想将参数传递给超类构造函数,该构造函数源自传递给子类的参数.
在Java中,这将是这样做的:
class SubClass extends SuperClass {
public SubClass(String s) {
super(s);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的事情:
function SubClass(args) {
this.constructor.prototype = new SuperClass(args);
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用.那么在JavaScript中有没有办法做到这一点?
我正在阅读Matrix分解和潜在语义索引(在线版本©2009 Cambridge UP)
我试图了解如何减少矩阵中的维数.第13页有一个例子,我试图用Python的numpy复制.
让我们将原始出现矩阵"a"和三个SVD(奇异值分解)分解为矩阵"U","S"和"V".
我遇到的麻烦是,在我将"S"中较小的奇异值归零后,当我使用numpy将"U","S"和"V"相乘时,答案并不像pdf中给出的那样.底部3行不是全部为零.有趣的是,当我只是乘以"S"和"V"时,我得到了正确的答案.
这有点令人惊讶,但乘以"S"和"V"实际上是Manning和Schutze的书"统计自然语言处理基础"所说的你必须要做的事情.但这不是pdf在第10页中所说的.
那么这里发生了什么?
我想创建一个使用类似于此的策略设计模式的类:
class C:
@staticmethod
def default_concrete_strategy():
print("default")
@staticmethod
def other_concrete_strategy():
print("other")
def __init__(self, strategy=C.default_concrete_strategy):
self.strategy = strategy
def execute(self):
self.strategy()
Run Code Online (Sandbox Code Playgroud)
这给出了错误:
NameError: name 'C' is not defined
Run Code Online (Sandbox Code Playgroud)
替换strategy=C.default_concrete_strategy为strategy=default_concrete_strategy将工作但是,默认情况下,策略实例变量将是静态方法对象而不是可调用方法.
TypeError: 'staticmethod' object is not callable
Run Code Online (Sandbox Code Playgroud)
如果我删除@staticmethod装饰器它会工作,但还有其他方法吗?我希望自己记录默认参数,以便其他人立即看到如何包含策略的示例.
此外,是否有更好的方法来公开策略而不是静态方法?我不认为实现完整的课程在这里有意义.
python static-methods strategy-pattern default-parameters python-3.x