Tag: 属性

关于如何在python中使用属性function的真实世界的例子?

我感兴趣的是如何在Python中使用@property 。 我读过python文档和那里的例子,在我看来,只是一个玩具代码: class C(object): def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x 我不知道从包装属性装饰器的_x可以得到什么好处。 为什么不只是实现为: class C(object): def __init__(self): self.x = None 我认为,在某些情况下,属性function可能会有用。 但当? 有人能给我一些真实的例子吗? 谢谢。

“奇怪的”C#属性语法

我刚刚在ac#项目中看到了这个: public char this[int index] 我认为自己是C#的新手; 任何人都可以帮助它是什么意思?

封装私有成员作为一个属性和定义一个没有私有成员的属性之间有什么区别?

封装一个私人成员之间有什么区别(性能,内存…等) private int age; public int Age { get { return age; } set { age = value; } } 并定义一个像这样的属性 public int Age { get ; set ; }

如何在我的属性中设置dynamic值

我想将一个dynamicvariables作为parameter passing给我的属性。 这里我想使用Environment.MachineName,看下面的代码: public interface IMonitoringViewModelConfiguration : IConfigurationContainer { [ConfigurationKey("MonitoringService", Environment.MachineName)] string ConnectionString { get; } } 但是我得到这个错误:错误1一个属性参数必须是一个常量expression式,typeofexpression式或数组创buildexpression式属性参数typesAbc.ServiceBus.Monitoring.ViewModel 有没有任何解决方法尽可能干净,以通过我的Environment.MachineName? 谢谢。 约翰 PS:我发现了一些关于这个案例的文章,但是它已经被写入了2 – 3年前。 但是今天,来自.NET 4.0的clr是否提供了一些很好的解决scheme?

为什么任何人都不会接受C#中的公共字段?

似乎每个C#静态分析器都想在发现公共领域时抱怨。 但为什么? 当然,有些情况下公共(或内部) 域是足够的,并且使用get_和set_方法拥有一个属性是没有意义的。 如果我确实知道我不会重新定义该领域或添加它(副作用是不好的,对吧?) – 不应该是一个简单的领域足够吗?

任何理由使用自动实现的属性超过手动实现的属性?

我理解了PROPERTIES超过FIELDS的优点,但是我觉得使用AUTO实现的属性而不是MANUAL实现的属性并没有提供任何优势,只是让代码更加简洁一些。 我感觉更舒适的使用: private string _postalCode; public string PostalCode { get { return _postalCode; } set { _postalCode = value; } } 代替: public string PostalCode { get; set; } 主要是因为如果我想要做任何自定义的get和set的实现,我必须创build自己的属性,无论如何由私人领域支持。 那么,为什么不从一开始就咬住子弹,为了一致性而立即给予所有属性这种灵活性? 考虑到您在Visual Studio中所要做的只是点击您的私有字段名称,然后按Ctrl + E,就完成了。 如果我手动执行,那么最终会出现一些不一致性,其中有一些由专用字段支持的手动创build的公共属性,以及一些自动实现的属性。 我感觉好多了,无论是全自动还是全手动。 这只是我吗? 我错过了什么吗? 我误解了什么吗? 我是否过分强调一致性? 我总是可以find有关C#特性的合法讨论,几乎总是有利有弊,但在这种情况下,我确实找不到任何人推荐使用自动实现的属性。

只写属性是否有实际应用?

我不知道为什么我开始想这个,但现在我似乎无法停下来。 在C#中 – 也许还有很多其他的语言,我记得Delphi也曾经让你这样做 – 编写这个语法是合法的: class WeirdClass { private void Hello(string name) { Console.WriteLine("Hello, {0}!", name); } public string Name { set { Hello(name); } } } 换句话说,该属性有一个setter,但没有getter ,它是只写的 。 我想我想不出有什么理由说这是非法的 ,但是我从来没有真正看到过它,而且我看起来在野外有一些相当辉煌的代码。 这似乎是一种代码味道; 编译器似乎应该给我一个警告: CS83417:属性“名称”似乎是完全无用和愚蠢的。 不好的程序员! 考虑用一种方法replace。 但是也许我只是没有做足够长的时间,或者一直在狭窄的领域里工作,以便看到有效使用这样的结构的例子。 是否有真实的只写属性的例子,要么不能被直接的方法调用取代,要么变得不那么直观?

@synthesized实例variables的可见性是什么?

如果您的公共界面中有一个属性,如下所示 @interface MyClass : NSObject @property(strong) NSString *myProp; @end 然后综合它,实际上综合variables: @implementation MyClass @synthesize myProp = _myProp; // or just leave it at the default name.. @end 什么是实例variables_myProp的可见性? 也就是说,这是考虑@public , @protected或@public @protected ? 我猜,因为MySubClass可以从MyClassinheritance,那么它也将获得属性(自然),但它也会inheritance实例variables的可见性? 如果我把这个属性放在一个类扩展中,它有什么不同? 这会隐藏子类的属性,我也猜测实例variables。 这是logging在任何地方?

python函数如何访问自己的属性?

有可能从函数范围内访问python函数对象的属性? 例如,让我们有 def f(): return SOMETHING f._x = "foo" f() # -> "foo" 现在,如果我们想让_x属性内容“foo”返回,那么SOMETHING是什么? 如果甚至可能(简单地说) 谢谢 更新: 我也想下面的工作: g = f del f g() # -> "foo" 更新2: 声明这是不可能的(如果是这种情况),以及为什么比提供一种方式更令人满意,比如用一个不同的对象而不是一个函数

如何创build自定义validation属性?

我想创build一个自定义的validation属性,我想在我的模型类中比较我的属性的值与另一个属性的值。 例如,我在我的模型类中: … public string SourceCity { get; set; } public string DestinationCity { get; set; } 而我想创build一个自定义属性来使用它,像这样: [Custom("SourceCity", ErrorMessage = "the source and destination should not be equal")] public string DestinationCity { get; set; } //this wil lcompare SourceCity with DestinationCity 我如何到那里?