本文概述
- 1.什么是getter和setter
- 2.私有属性-封装
- 3.财产
- 什么是getter和setter
- 私有属性-封装
- 属性
- 吸气剂:-这些是面向对象编程(OOPS)中使用的方法, 该方法有助于从类中访问私有属性。
- 设置器:-这些是OOPS功能中使用的方法, 可帮助将值设置为类中的私有属性。
让我们看看如何在Python中实现私有属性。
class SampleClass:def __init__(self, a):
## private varibale or property in Python
self.__a = a## getter method to get the properties using an object
def get_a(self):
return self.__a## setter method to change the value 'a' using an object
def set_a(self, a):
self.__a = a
SampleClass具有三种方法。
__init __:-用于初始化类的属性。
- __a:-这是一个私有属性。
- get_a:-用于获取私有属性a的值。
- set_a:-用于使用类的对象设置a的值。
让我们看看该类如何工作。
## creating an object
obj = SampleClass(10)## getting the value of 'a' using get_a() method
print(obj.get_a())## setting a new value to the 'a' using set_a() method
obj.set_a(45)print(obj.get_a())
10
45
这是在Python中实现私有属性, 获取器和设置器的方式。 Java中遵循相同的过程。让我们以Pythonic方式编写相同的实现。
class PythonicWay:def __init__(self, a):
self.a = a
你不需要任何获取器, 设置器方法即可访问或更改属性。你可以使用属性名称直接访问它。
让我们来看看。
## Creating an object for the 'PythonicWay' class
obj = PythonicWay(100)print(obj.a)
100
上面两个类之间有什么区别。
- SampleClass隐藏私有属性和方法。它实现了OOPS的封装功能。
- PythonicWay不会隐藏数据。它没有实现任何封装功能。
- 这取决于我们的需要。如果需要私有属性和方法, 则可以使用setters, getters方法来实现类, 否则将使用常规方法来实现。
假设我们传递的值是偶数且为正, 则可以将其设置为属性, 否则将其设置为2。
让我们通过更改SampleClass中的set_a()方法来实现这一点。
class SampleClass1:def __init__(self, a):
## calling the set_a() method to set the value 'a' by checking certain conditions
self.set_a(a)## getter method to get the properties using an object
def get_a(self):
return self.__a## setter method to change the value 'a' using an object
def set_a(self, a):## condition to check whether 'a' is suitable or not
if a >
0 and a % 2 == 0:
self.__a = a
else:
self.__a = 2
让我们通过创建一个对象来检查类。
## creating an object for the class 'SampleClass1'
obj = SampleClass1(16)print(obj.get_a())
16
让我们看看如何使用@property装饰器实现上述类。
class Property:def __init__(self, var):
## initializing the attribute
self.a = var@property
def a(self):
return self.__a## the attribute name and the method name must be same which is used to set the value for the attribute
@a.setter
def a(self, var):
if var >
0 and var % 2 == 0:
self.__a = var
else:
self.__a = 2
@property用于获取私有属性的值, 而不使用任何getter方法。我们必须在返回私有变量的方法前加一行@property。
要设置私有变量的值, 我们在方法前面使用@ method_name.setter。我们必须将其用作设置器。
让我们测试Property类, 以检查装饰器是否正常工作。
## creating an object for the class 'Property'
obj = Property(23)print(obj.a)
2
@ a.setter将通过检查方法中提到的条件来设置a的值。使用该属性的另一种方法是…
class AnotherWay:def __init__(self, var):
## calling the set_a() method to set the value 'a' by checking certain conditions
self.set_a(var)## getter method to get the properties using an object
def get_a(self):
return self.__a## setter method to change the value 'a' using an object
def set_a
(self, var):## condition to check whether var is suitable or not
if var >
0 and var % 2 == 0:
self.__a = var
else:
self.__a = 2a = property(get_a, set_a)
将所有getter和setter方法传递给该属性, 并将其分配给必须用作类属性的变量。
## creating an object for the 'AnotherWay' class
obj = AnotherWay(28)print(obj.a)
28
将setter和getter方法设为私有以隐藏它们。我们开始做吧。
class FinalClass:def __init__(self, var):
## calling the set_a() method to set the value 'a' by checking certain conditions
self.__set_a(var)## getter method to get the properties using an object
def __get_a(self):
return self.__a## setter method to change the value 'a' using an object
def __set_a(self, var):## condition to check whether var is suitable or not
if var >
0 and var % 2 == 0:
self.__a = var
else:
self.__a = 2a = property(__get_a, __set_a)
【Python中的属性与Getter和Setters】让我们检查一下它是否正常工作。
## creating an object for the 'AnotherWay' class
obj = FinalClass(12)print(obj.a)
12
总结
现在, 你已经了解了如何在Python中实现封装以及setter, getter和属性之间的区别。
如果你不熟悉Python, 建议你参加srcmini的免费Python入门课程。
如果你对本文有任何疑问, 请在评论部分中提及。编码愉快!
推荐阅读
- SQL索引简介
- 了解Python中的递归函数
- linux的swapper pg dir的初始化
- TCP拥塞控制ABC Appropriate Byte Counting 的利弊说
- Android组件化探索与实践
- Caused byorg hibernate DuplicateMappingExceptionDuplicat
- 微信为什么不能下载apk 微信不能打开App下载地址的问题
- 微信浏览器无法跳转到apk下载链接 微信屏蔽了我的APP下载链接如何处理
- apk文件二维码微信无法识别 APP在微信中二维码扫描无法下载的解决方案