Getter and Setter – Python

As the title says, I am presenting, Getters and Setters for

First, let’s review some OOP concepts, then we will see what are those (If you thought of crocs, consider leaving a unicorn) getters and setters.

OOP Concepts

Method = A function from a class
Property = A variable from a class
A property starting with “_” = Private property (i.e it can only be accessed from within the class)
Apopathodiaphulatophobie = Exaggerated fear of constipation

Getter and Setter

A getter is a method that is used to obtain a property of a class

A setter is a method that is used to set the property of a class

Why do these two exists?

Mostly for two reasons, encapsulation and to maintain a consistent interface in case internal details change

(Thank you Danben for your Answer)

How do i write it in Python?

The syntax for doing that is as follows

<span>>>></span> <span>class</span> <span>MyClass</span><span>:</span>
<span>>>></span> <span>def</span> <span>__init__</span><span>(</span><span>self</span><span>,</span> <span>A</span><span>,</span> <span>B</span><span>=</span><span>None</span><span>):</span>
<span>>>></span> <span>self</span><span>.</span><span>_A</span> <span>=</span> <span>A</span>
<span>>>></span> <span>self</span><span>.</span><span>_B</span> <span>=</span> <span>B</span>
<span>>>></span> <span>@property</span>
<span>>>></span> <span>def</span> <span>A</span><span>(</span><span>self</span><span>):</span>
<span>>>></span> <span>return</span> <span>self</span><span>.</span><span>_A</span>
<span>>>></span> <span>@A.setter</span>
<span>>>></span> <span>def</span> <span>A</span><span>(</span><span>self</span><span>,</span> <span>A</span><span>):</span>
<span>>>></span> <span>self</span><span>.</span><span>_A</span> <span>=</span> <span>A</span>
<span>>>></span>
<span>>>></span> <span>@property</span>
<span>>>></span> <span>def</span> <span>B</span><span>(</span><span>self</span><span>):</span>
<span>>>></span> <span>return</span> <span>self</span><span>.</span><span>_B</span>
<span>>>></span>
<span>>>></span> <span>@B.setter</span>
<span>>>></span> <span>def</span> <span>B</span><span>(</span><span>self</span><span>,</span> <span>B</span><span>):</span>
<span>>>></span> <span>self</span><span>.</span><span>_B</span> <span>=</span> <span>B</span>
<span>>>></span>
<span>>>></span> <span>instance</span> <span>=</span> <span>MyClass</span><span>(</span><span>"</span><span>This is A</span><span>"</span><span>)</span>
<span>>>></span> <span>print</span><span>(</span><span>instance</span><span>.</span><span>A</span><span>)</span>
<span>This</span> <span>is</span> <span>A</span>
<span>>>></span> <span>instance</span><span>.</span><span>A</span> <span>=</span> <span>"</span><span>A Changed</span><span>"</span>
<span>>>></span> <span>print</span><span>(</span><span>instance</span><span>.</span><span>A</span><span>)</span>
<span>A</span> <span>Changed</span>
<span>>>></span> <span>print</span><span>(</span><span>instance</span><span>.</span><span>B</span><span>)</span>
<span>None</span>
<span>>>></span> <span>instance</span><span>.</span><span>B</span> <span>=</span> <span>"</span><span>This is B</span><span>"</span>
<span>>>></span> <span>print</span><span>(</span><span>instance</span><span>.</span><span>B</span><span>)</span>
<span>This</span> <span>is</span> <span>B</span>
<span>>>></span> <span>class</span> <span>MyClass</span><span>:</span>
<span>>>></span>     <span>def</span> <span>__init__</span><span>(</span><span>self</span><span>,</span> <span>A</span><span>,</span> <span>B</span><span>=</span><span>None</span><span>):</span>
<span>>>></span>         <span>self</span><span>.</span><span>_A</span> <span>=</span> <span>A</span>
<span>>>></span>         <span>self</span><span>.</span><span>_B</span> <span>=</span> <span>B</span>
<span>>>></span>     <span>@property</span>
<span>>>></span>     <span>def</span> <span>A</span><span>(</span><span>self</span><span>):</span>
<span>>>></span>         <span>return</span> <span>self</span><span>.</span><span>_A</span>
<span>>>></span>     <span>@A.setter</span>
<span>>>></span>     <span>def</span> <span>A</span><span>(</span><span>self</span><span>,</span> <span>A</span><span>):</span>
<span>>>></span>         <span>self</span><span>.</span><span>_A</span> <span>=</span> <span>A</span>
<span>>>></span>     
<span>>>></span>     <span>@property</span>
<span>>>></span>     <span>def</span> <span>B</span><span>(</span><span>self</span><span>):</span>
<span>>>></span>         <span>return</span> <span>self</span><span>.</span><span>_B</span>
<span>>>></span>     
<span>>>></span>     <span>@B.setter</span>
<span>>>></span>     <span>def</span> <span>B</span><span>(</span><span>self</span><span>,</span> <span>B</span><span>):</span>
<span>>>></span>         <span>self</span><span>.</span><span>_B</span> <span>=</span> <span>B</span>
<span>>>></span> 
<span>>>></span> <span>instance</span> <span>=</span> <span>MyClass</span><span>(</span><span>"</span><span>This is A</span><span>"</span><span>)</span>
<span>>>></span> <span>print</span><span>(</span><span>instance</span><span>.</span><span>A</span><span>)</span>
<span>This</span> <span>is</span> <span>A</span>
<span>>>></span> <span>instance</span><span>.</span><span>A</span> <span>=</span> <span>"</span><span>A Changed</span><span>"</span>
<span>>>></span> <span>print</span><span>(</span><span>instance</span><span>.</span><span>A</span><span>)</span>
<span>A</span> <span>Changed</span>
<span>>>></span> <span>print</span><span>(</span><span>instance</span><span>.</span><span>B</span><span>)</span>
<span>None</span>
<span>>>></span> <span>instance</span><span>.</span><span>B</span> <span>=</span> <span>"</span><span>This is B</span><span>"</span>
<span>>>></span> <span>print</span><span>(</span><span>instance</span><span>.</span><span>B</span><span>)</span>
<span>This</span> <span>is</span> <span>B</span>
>>> class MyClass: >>> def __init__(self, A, B=None): >>> self._A = A >>> self._B = B >>> @property >>> def A(self): >>> return self._A >>> @A.setter >>> def A(self, A): >>> self._A = A >>> >>> @property >>> def B(self): >>> return self._B >>> >>> @B.setter >>> def B(self, B): >>> self._B = B >>> >>> instance = MyClass("This is A") >>> print(instance.A) This is A >>> instance.A = "A Changed" >>> print(instance.A) A Changed >>> print(instance.B) None >>> instance.B = "This is B" >>> print(instance.B) This is B

Enter fullscreen mode Exit fullscreen mode

原文链接:Getter and Setter – Python

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
Aim for the moon. If you miss, you may hit a star.
把月亮作为你的目标。如果你没打中,也许你还能打中星星
评论 抢沙发

请登录后发表评论

    暂无评论内容