我是Python新手,来自C#。我知道如何公开类属性和方法。我想宣传我的实例变量。智能感知检测它们将是理想的。另外,如果这不是pythonic或者我应该做其他事情,请告诉我。
class MyClass(Object):
class_attribute = "Foo"
#This is the way I'm currently publicizing instance attributes.
#Basically I'm using properties instead of instance attributes.
@property
def instance_property(self):
return self._instance_property
@instance_property.setter
def instance_property_set(self, value):
self._instance_property = value
答案 0 :(得分:3)
您无需这样做。 Python社区使用名称具有的任何类成员的a convention:
Object
方法的覆盖。 More info in the docs. 如果你真的想在接受一个成员时做一些计算,你可以做属性,但它不被视为/强制执行最佳做法。
答案 1 :(得分:1)
class MyClass(Object):
class_attribute = "Foo"
def __init__(self,*args,**kwargs):
self.instance_property = "whatever"
通常它(设置所需的值)在init函数中完成...或通过文档完成,或者将其设置为无效的默认值,稍后您检查并通知消费者他们必须在调用Calculate()之前设置变量X或无论如何...... getter和setter并不是要告知消费者他们应该设置哪些变量
没有理由使用getter / setter,除非你真的需要做一些工作(不只是把它传递给另一个变量)
setter的用例是
class GPIO(object):
@property
def value(self):
return open("/sys/class/gpio/gpio141/value").read()
@value.setter
def set_value(self,val):
open("/sys/class/gpio/gpio141/value","w").write(val)