我想知道__init__和__call__方法之间的区别.
例如:
class test:
def __init__(self):
self.a = 10
def __call__(self):
b = 20
Run Code Online (Sandbox Code Playgroud) 在JavaScript中,我想创建一个对象实例(通过new运算符),但是将任意数量的参数传递给构造函数.这可能吗?
我想做的是这样的事情(但下面的代码不起作用):
function Something(){
// init stuff
}
function createSomething(){
return new Something.apply(null, arguments);
}
var s = createSomething(a,b,c); // 's' is an instance of Something
Run Code Online (Sandbox Code Playgroud)
答案
从这里的回复中可以清楚地看出,没有内置的方式.apply()与new运营商通话.然而,人们提出了一些非常有趣的解决方案.
我首选的解决方案是Matthew Crumley的这个解决方案(我已将其修改为通过该arguments属性):
var createSomething = (function() {
function F(args) {
return Something.apply(this, args);
}
F.prototype = Something.prototype;
return function() {
return new F(arguments);
}
})();
Run Code Online (Sandbox Code Playgroud) 我想为一个类(在这种情况下是一个形状工厂)有一个私有静态常量.
我想要有类似的东西.
class A {
private:
static const string RECTANGLE = "rectangle";
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我从C++(g ++)编译器中得到了各种错误,例如:
ISO C++禁止成员'RECTANGLE'的初始化
非整数类型'std :: string'的静态数据成员的无效类初始化
错误:使'RECTANGLE'静止
这告诉我这种成员设计不符合标准.如何在不使用#define指令的情况下拥有私有文字常量(或者可能是公共的)(我想避免数据全局性的丑陋!)
任何帮助表示赞赏.
这个问题已在C#/ .Net的背景下提出.
现在我想学习C++中结构和类之间的区别.请讨论技术差异以及在OO设计中选择其中一个的原因.
我将从一个明显的区别开始:
public:or private:,则结构的成员默认是公共的; 默认情况下,类的成员是私有的.我确信在C++规范的模糊角落中还有其他差异.
我来自Java,现在我正在使用Ruby.
我不熟悉的一个语言功能是module.我想知道究竟是module什么,你什么时候使用一个,为什么要用module一个class?
是否可以在ES6类中创建私有属性?
这是一个例子.我怎样才能阻止访问instance.property?
class Something {
constructor(){
this.property = "test";
}
}
var instance = new Something();
console.log(instance.property); //=> "test"
Run Code Online (Sandbox Code Playgroud) 以下代码在Swift 1.2中编译:
class myClass {
static func myMethod1() {
}
class func myMethod2() {
}
static var myVar1 = ""
}
func doSomething() {
myClass.myMethod1()
myClass.myMethod2()
myClass.myVar1 = "abc"
}
Run Code Online (Sandbox Code Playgroud)
静态函数和类函数有什么区别?我应该使用哪一个,何时使用?
如果我尝试定义另一个变量class var myVar2 = "",它会说:
类中尚未支持的类存储属性; 你的意思是'静态'吗?
当支持这个特性时,静态变量和类变量之间的区别是什么(即两者都是在类中定义的)?我应该使用哪一个,何时使用?
(Xcode 6.3)
是否可以将多个类分配给单个HTML容器?
就像是:
<article class="column, wrapper">
Run Code Online (Sandbox Code Playgroud) 我想要一个Class对象,但我想强制它所代表的任何类来扩展A类并实现接口B.
我可以:
Class<? extends ClassA>
Run Code Online (Sandbox Code Playgroud)
要么:
Class<? extends InterfaceB>
Run Code Online (Sandbox Code Playgroud)
但我不能两者兼顾.有没有办法做到这一点?