我想知道是否有某种方法可以使用Pycharm为类中的所有变量自动生成getter(@property)或setter。
如果有办法,有人可以指出吗?
谢谢!实际上我的意思是自动生成(@property)和(@ x.setter)。
答案 0 :(得分:16)
没有办法这样做。您可以提取代码的某些部分,但不能让pycharm为您生成getter和setter。也没有必要,因为所有变量都是公共的,_var
值即使被视为私有变量也可以改变。
编辑(有问题的变更):
如果您想在制作getter和setter时编写更少的代码,那么只需使用PyCharm中的props
或propsd
代码段。
答案 1 :(得分:3)
没有必要。 getter和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。
答案 2 :(得分:0)
仅仅因为Paython不强制执行私人成员,并不意味着您就必须没有它。
PyCharm没有提供用于为所有私人成员创建属性的菜单,但它具有活动模板:
在您的课堂上(缩进必须正确),键入prop并按Enter。将会显示您只读属性的存根。
我采用了实时模板来轻松生成类似getter的属性: 打开设置(Ctrl + Alt + S)->编辑器->实时模板-> Python-> prop
@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$
答案 3 :(得分:0)
很棒,我做了如下的模板。按照@先生。明确的建议。
@property
def $NAME$(self):
return self.__$NAME$
@$NAME$.setter
def $NAME$(self, value):
self.__$NAME$ = value
超级帮助