python中getter底层本质_Python中的Getter和Setter

为了进行数据封装,大多数面向对象的语言都使用getter和setters方法。这是因为我们要对其他类隐藏对象类的属性,以便其他类中的方法不会意外修改数据。

顾名思义,getter是帮助访问私有属性或获取私有属性值的方法,而setter是帮助改变或设置私有属性值的方法。

访问私有属性

下面,我们编写代码来创建一个类,对其进行初始化并访问其变量,而无需创建任何其他方法。

示例class year_graduated:

def __init__(self, year=0):

self._year = year

# Instantiating the class

grad_obj = year_graduated()

#Printing the object

print(grad_obj)

#Printing the object attribute

print(grad_obj.year)

输出结果

运行上面的代码将为我们提供以下结果-<__main__.year_graduated>

0

第一个打印语句为我们提供了所创建对象的详细信息,而第二个打印对象为我们提供了private属性的默认值。

使用getter和setter

在下面的示例中,我们将创建一个类,初始化为is,然后向其中的每个添加一个getter和setter方法。然后,通过实例化类并使用这些getter和setter方法访问这些方法中的变量。因此,您可以将逻辑隐藏在setter方法内。

示例class year_graduated:

def __init__(self, year=0):

self._year = year

# getter method

def get_year(self):

return self._year

# setter method

def set_year(self, a):

self._year = a

grad_obj = year_graduated()

# Before using setter

print(grad_obj.get_year())

# After using setter

grad_obj.set_year(2019)

print(grad_obj._year)

输出结果

运行上面的代码将为我们提供以下结果:0

2019

将属性设为私有

在下一个示例中,我们看到如何将方法设为私有,以使其中的变量无法由外部调用函数操纵。它们只能由类中的函数操纵。通过在其前面加上两个下划线来使它们变为私有。

示例class year_graduated:

def __init__(self, year=32):

self._year = year

# make the getter method

def get_year(self):

return self.__year

# make the setter method

def set_year(self, a):

self.__year = a

grad_obj = year_graduated()

print(grad_obj._year)

# Before using setter

print(grad_obj.get_year())

#

# # After using setter

grad_obj.set_year(2019)

print(grad_obj._year)

输出结果

运行上面的代码将为我们提供以下结果:32

AttributeError: 'year_graduated' object has no attribute '_year_graduated__year'

从私有方法中读取值

不,我们可以使用property方法而不使用getter方法来访问私有属性值。

示例class year_graduated:

def __init__(self, year=32):

self._year = year

@property

def Aboutyear(self):

return self.__year

@Aboutyear.setter

def Aboutyear(self, a):

self.__year = a

grad_obj = year_graduated()

print(grad_obj._year)

grad_obj.year = 2018

print(grad_obj.year)

输出结果

运行上面的代码将为我们提供以下结果:32

2018

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值