[Tutor] Concept related to python classes
Manprit Singh
manpritsinghece at gmail.com
Mon Sep 7 12:15:25 EDT 2020
Dear Sir,
This is again a continuation mail . I have tried to solve the same problem
of finding area of a triangle using decorators . and it seems more
effective in comparison to my previous code, which is given below :
class Triangle:
def __init__(self):
self._a = None
self._b = None
self._c = None
self._area = None
@property
def a(self):
"""I'm the 'a' property."""
return self._a
@a.setter
def a(self, a1):
self._a = a1
@property
def b(self):
"""I'm the 'b' property."""
return self._b
@b.setter
def b(self, b1):
self._b = b1
@property
def c(self):
"""I'm the 'c' property."""
return self._c
@c.setter
def c(self, c1):
self._c = c1
def calcarea(self):
s = (self._a + self._b + self._c) / 2
self._area = (s * (s - self._a) * (s - self._b) * (s -
self._c))**0.5
@property
def area(self):
self.calcarea()
return self._area
tri = Triangle()
tri.a = 3
tri.b = 4
tri.c = 5
print("Area of triangle with
sides",tri.a,"&",tri.b,"&",tri.c,"is",tri.area)
tri.a = 4
tri.b = 4
tri.c = 3
print("Area of triangle with
sides",tri.a,"&",tri.b,"&",tri.c,"is",tri.area)
Output is as follows:
Area of triangle with sides 3 & 4 & 5 is 6.0
Area of triangle with sides 4 & 4 & 3 is 5.562148865321747
Just see, after making the object of the class Triangle and assigning it to
a variable tri , i am just going in an easy way similar to assigning values
to the instance variables, although here in this example , by writing
tri.a, tri.b & tri.c for setting, the setter function for a particular
instance variable is accessed due to property.
and immediately after it , writing tri.area gives the area This seems more
pythonic.
What about adopting this practise ?
Regards
Manprit Singh
On Mon, Sep 7, 2020 at 6:09 PM Alan Gauld via Tutor <tutor at python.org>
wrote:
> On 07/09/2020 10:59, Manprit Singh wrote:
>
> > class Triangle:
> > def __init__(self, a, b, c):
> > self.a = a
> > self.b = b
> > self.c = c
> >
> > def area(self):
> > s = (self.a + self.b + self.c) / 2
> > return (s * (s - self.a) * (s - self.b) * (s - self.c))**0.5
> >
> > def resize(self, a1, b1, c1):
> > self.a = a1
> > self.b = b1
> > self.c = c1
>
>
> Yes, that looks more like what I'd expect to see.
>
> BTW Thanks for posting the area equation, I'd never come across
> Herons formula before and had to do some reading on Wikipedia :-)
>
> --
> Alan G
> Author of the Learn to Program web site
> http://www.alan-g.me.uk/
> http://www.amazon.com/author/alan_gauld
> Follow my photo-blog on Flickr at:
> http://www.flickr.com/photos/alangauldphotos
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
More information about the Tutor
mailing list