一般在python面向对象中,每个类内都会有其所对应的属性。
而在定义属性值的时候,可能还得会对这些属性值进行修改和获取。为了确保代码的安全性,封装性和可操作性,我们可以使用get,set方式去操控。
get方法用于获取属性值,而set方法用于设置属性值。
通过get,set 方法发,我们可以对对象的属性值进行设定和获取。
一.如何实现
关于方法,大致有两种。
我先来分享最简单的方法。
第一种
1.定义类和属性
首先,我们先要定义一个类,然后使用构造方法写出这个类的属性都包含什么。
这是一种不赋值的操作,具体使用看自己需求。
# 设定一个用户类
# 先简单定义三个属性(按照自己的需求)
class User:
def __init__(self):
self._name = None # 姓名
self._gender = None # 性别
self._age = None # 年龄
在这里我们定义了一个User类,并在初始化方法init内定义属于User的私有属性(大多数init内都是属于他本类的私有属性)
2.设定get,set方法
简单举个栗子
# 获取name属性值
def get_name(self):
return self._name
# 设置name属性值
def set_name(self, value):
self._name = value
set方法可以依照自己的需求自定义,比如那么只能设定字符串类型的值等等。
在set方法中我们使用value来接受外部传递的值,然后将其赋值给对应的属性_name.
而get方法的目的就是获取刚刚设定的属性值。
3.使用方式
# 建立对象
user = User()
# 使用set方法给user对象的name属性赋值
user.set_name('光头强')
# 使用get方法获取属性值
print(user.get_name())
4.附加(设定属性时为None的原因)
关于我们为什么设定属性值为None,因为像我们这种写法如果给属性设定对于的参数时,那在建立对象值时就一定要给对象传递参数,不传会报错
第二种进阶版
@property是一种装饰器,用来修饰方法。
@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改。
@setter()表示“可写”,可以用来修改设定属性值。
1、建立对象和属性
同理
class User:
def __init__(self, name, gender, age):
self._name = name # 姓名
self._gender = gender # 性别
self._age = age # 年龄
2.设定get,set方法
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value
需要注意的是,定义setter方法时,方法名称必须与只读属性的名称相同,并且应该在定义getter方法之后。
3、使用方法
# 建立对象
user = User
# 赋值
user.name = '光头强'
# 获取
print(user.name)
这种方法相对来说可能会简单,但新手还是建议去使用第一种。
第一种相对来说会使用的更清楚些
后续持续更新中……