最近在C#和WPF的较量中,喜欢上了C#的属性:
public double length_inches
{
get { return length_metres * 39.0; }
set { length_metres = value/39.0; }
}
当然要注意,length_metres 可能会从一个字段变成一个属性,代码不需要关心。 WPF 还可以非常愉快地将 UI 元素绑定(bind)到对象属性。
当我第一次了解类和对象时,我认为有一种方法可以做到,因为它看起来很明显!将复杂性隐藏在类中的意义在于,您无需再关心存储的是什么。但直到现在才看到它。
有趣的是,我第一次看到它是在 VB.Net 中完成的。 OO 纯度的领先优势。
问题是,我可以用其他我经常使用的语言重新创建属性吗,比如 javascript、python、php?在 javascript 中,如果我将一个变量设置为一个闭包,我是否会再次取回闭包,而不是它的结果?
最佳答案
Python 绝对支持属性:
class Foo(object):
def get_length_inches(self):
return self.length_meters * 39.0
def set_length_inches(self, val):
self.length_meters = val/39.0
length_inches = property(get_length_inches, set_length_inches)
从 Python 2.5 开始,只读属性存在语法糖,在 2.6 中,可写属性也存在:
class Foo(object):
# 2.5 or later
@property
def length_inches(self):
return self.length_meters * 39.0
# 2.6 or later
@length_inches.setter
def length_inches(self, val):
self.length_meters = val/39.0
关于c# - 是否可以用 C# 以外的语言实现属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675161/