我想知道是否有某种方法可以使用Pycharm为类中的所有变量自动生成getter(@property)或setter。
如果有办法,有人能指指点点吗?
谢谢!实际上,我的意思是自动生成(@property)和(@x.setter)。
发布于 2015-01-28 11:07:03
没有办法做到这一点。您可以提取代码的某些部分,但不能让py魅力为您生成getter和setter。也没有必要,因为所有变量都是公共的,_var
值也可以更改,即使它们被视为私有变量。
编辑(所涉更改):
如果您想在生成getter和setter时编写更少的代码,那么只需使用props
或PyCharm中的propsd
片段即可。
发布于 2019-12-12 19:58:23
仅仅因为Python不强制私有成员,并不意味着您必须没有它们。但是请注意,getter和setter是函数调用,比直接成员访问慢得多。
PyCharm没有提供一个菜单来为所有私有成员创建属性,但是它有一个活动模板:在类中(缩进必须是正确的),输入支柱并按enter键。将出现只读属性的存根。
我采用了我的活动模板来轻松地生成类似于getter的属性:打开设置(Ctrl+Alt+S)、->编辑器、-> live模板、->、Python、->道具
@property
def $NAME$(self):
return self.__$NAME$
用于读写访问的活动模板props
也是如此:
@property
def $NAME$(self) -> $TYPE$:
return self.__$NAME$
@$NAME$.setter
def $NAME$(self, $NAME$: $TYPE$):
self.__$NAME$ = $NAME$
发布于 2015-01-28 11:20:14
没有必要这样做。getters和setter的要点是
第一个不能用Python实现,第二个不需要在任何地方使用getter和setter。
如果你有
class Person(object):
def ___init__(self, full_name):
self.full_name = full_name
并决定让name
和surname
代替,然后您可以添加
@property
def full_name(self):
return self.name + " " + self.surname
@full_name.setter
def full_name(self, value):
self.name, self.surname = value.split()
而不破坏API。
https://stackoverflow.com/questions/28189763
复制相似问题