这是一个纯Python特定的设计问题:
class MyClass(object):
...
def get_my_attr(self):
...
def set_my_attr(self, value):
...
Run Code Online (Sandbox Code Playgroud)
和
class MyClass(object):
...
@property
def my_attr(self):
...
@my_attr.setter
def my_attr(self, value):
...
Run Code Online (Sandbox Code Playgroud)
Python让我们可以这样做.如果你要设计一个Python程序,你会使用哪种方法?为什么?
我这样做:
def set_property(property,value):
def get_property(property):
Run Code Online (Sandbox Code Playgroud)
要么
object.property = value
value = object.property
Run Code Online (Sandbox Code Playgroud)
我是Python的新手,所以我还在探索语法,我想对此做一些建议.
有了这个简单的类,我得到编译器警告
试图
x在自己的setter/getter中修改/访问
当我像这样使用它时:
var p: point = Point()
p.x = 12
Run Code Online (Sandbox Code Playgroud)
我得到一个EXC_BAD_ACCESS.如果没有明确支持ivars,我怎么能这样做?
class Point {
var x: Int {
set {
x = newValue * 2 //Error
}
get {
return x / 2 //Error
}
}
// ...
}
Run Code Online (Sandbox Code Playgroud) 为什么不允许使用以下C#代码:
public abstract class BaseClass
{
public abstract int Bar { get;}
}
public class ConcreteClass : BaseClass
{
public override int Bar
{
get { return 0; }
set {}
}
}
Run Code Online (Sandbox Code Playgroud)
CS0546'ConcreteClass.Bar.set':无法覆盖,因为'BaseClass.Bar'没有可覆盖的set访问器
我创建了一个带有一些属性的界面.
如果接口不存在,则类对象的所有属性都将设置为
{ get; private set; }
Run Code Online (Sandbox Code Playgroud)
但是,在使用接口时不允许这样做,这样可以实现,如果是这样,怎么办?
我知道如何通过执行以下操作为名称已知的属性创建getter和setter:
// A trivial example:
function MyObject(val){
this.count = 0;
this.value = val;
}
MyObject.prototype = {
get value(){
return this.count < 2 ? "Go away" : this._value;
},
set value(val){
this._value = val + (++this.count);
}
};
var a = new MyObject('foo');
alert(a.value); // --> "Go away"
a.value = 'bar';
alert(a.value); // --> "bar2"
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是,是否有可能定义这些全能的吸气剂和定型器?即,创建getter和setter的任何属性名称是不是已经定义.
这个概念可以在PHP中使用__get()和__set()魔术方法(请参阅PHP文档以获取有关这些的信息),所以我真的要问是否有与这些相当的JavaScript?
不用说,我理想地喜欢跨浏览器兼容的解决方案.
I have the following class:
class ReportView: NSView {
var categoriesPerPage = [[Int]]()
var numPages: Int = { return categoriesPerPage.count }
}
Run Code Online (Sandbox Code Playgroud)
Compilation fails with the message:
实例成员'categoriesPerPage'不能用于'ReportView'类型
这是什么意思?
这是我的代码:
@Column(columnName="firstname")
private String firstName;
@Column(columnName="lastname")
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
Run Code Online (Sandbox Code Playgroud)
是否可以在另一个类中读取我的注释@Column(columnName ="xyz123")的值?
我在某个地方看到了类似下面的内容,并想知道这是什么意思.我知道他们是getter和setter,但是想知道为什么字符串Type是这样定义的.谢谢你的帮助.
public string Type { get; set; }
Run Code Online (Sandbox Code Playgroud) 我正在尝试覆盖ActiveRecord模型的getter方法.我name在模型中调用了一个属性Category,我希望能够做到这样的事情:
def name
name_trans || name
end
Run Code Online (Sandbox Code Playgroud)
如果name_transattribute不是nil,则返回它,否则返回name属性.我该怎么做?
这应该像这样正常调用:
@category.name
Run Code Online (Sandbox Code Playgroud) getter-setter ×10
c# ×3
properties ×3
python ×2
swift ×2
.net ×1
annotations ×1
asp.net ×1
interface ×1
java ×1
java-6 ×1
javascript ×1
ruby ×1