c# - 是否可以用 C# 以外的语言实现属性?

标签 c# php javascript python properties

最近在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/

相关文章:

c# - 从 GridView TemplateField DropDownLists 更新 SQL 数据库

php - 多次上传的标题未保存到数据库

javascript - AJAX/APACHE/PHP/HTACCESS 配置

c# - System.IdentityModel.Selectors.UserNamePasswordValidator 不存在

javascript - 如何运行 Javascript 函数并在 Android 中获得返回?

php - 在 xampp 上安装 zend 框架

javascript - 使用 Highcharts 修正图 TableView

javascript - 使用 ng-repeat 中的 ng-model 以 AngularJS 形式提交数据

c# - 如何用C#查询硬盘型号?

php - PHP 的文件夹大小?