提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
浅析java中setter和getter的作用(引用文末链接大佬文章)
一、@property装饰器
可以把一个方法的调用变成属性调用。
@property 主要用于帮助我们处理属性的读操作、写操作。对于某一个属性,我们可以直
接通过:
emp1.salary = 30000
如上的操作读操作、写操作。但是,这种做法不安全。比如,我需要限制薪水必须为 1-10000
的数字。这时候,我们就需要通过 getter、setter 方法来处理
浅析java中setter和getter的作用(引用文末链接大佬文章)
封装类的内部细节提供对应的方法,有时候可以对属性赋值的设置进行限制,如下通过setter方法,指定了年龄输入范围只在0-120
class Person{
private int age;
public void setAge(int age){
if(age <= 0 || age > 120){
throw new RuntimeException("年龄范围不合法");
}
this.age = age;
}
public int getAge(){
return this.age;
}
}
或者部分属性读写权限分离 只提供读(getter)或写(setter)其中一种权限。
二、具体函数实现
class person:
__age=20#私有类属性 dir可以查到
def __init__(self,ag,age):
self.ag=ag#实例属性
self.__age=age#私有实例属性
def work(self):#公共实例方法
print("它",self.ag)#类内部可以直接访问
@property #相当于work1属性的 getter 方法,输出值
def work1(self):#公共实例方法
print("它",self.__age)#类内部可以直接访问私有属性
@work1.setter #相当于属性的 setter 方法,改值
def work1(self,age):
#方法内可用if等各种方法限定输入的值
if (0<__age<100):
self.__age=age
else:
print("值异常不可修改")
#========================== RESTART: D:/Pwork/修饰器.py ==========================
>>> x=person (30,31)#创建实例对象,系统自动调用__init__()方法赋值给实例属性
>>> x.ag
30
>>> x._person__age
31
>>> x.ag=12
>>> x.ag
12
>>> x._person__age=13#私有属性的更改
>>> x._person__age
13
>>> x.work()#公共方法的调用
它 12
>>> x.work1#property修饰符的使用
它 13
>>> x.work1=3
>>> x.work1
它 3
>>> x.work1=301
值异常不可修改
>>>
属性和方法命名总结
-
. _xxx:保护成员,不能用“from module import * ”导入,只有类对象和子类对象能访
-
问这些成员。
-
. __xxx__:系统定义的特殊成员
-
. __xxx: 类中的私有成员,只有类对象自己能访问,子类对象也不能访问。(但,在类外
-
部可以通过“对象名. _类名__xxx”这种特殊方式访问。Python 不存在严格意义的私有成员)
注:再次强调,方法和属性都遵循上面的规则。
类编码风格
1. 类名首字母大写,多个单词之间采用驼峰原则。
2. 实例名、模块名采用小写,多个单词之间采用下划线隔开。
3. 每个类,应紧跟“文档字符串”,说明这个类的作用。
4. 可以用空行组织代码,但不能滥用。在类中,使用一个空行隔开方法;模块中,使用两
个空行隔开多个类。
总结
个人感觉没啥用写一大堆就去俩括号,当然从安全角度来说封装好的函数更好
备忘参考链接https://www.cnblogs.com/gxhunter/p/10847838.html