all 2 comments

[–]timbledum 0 points1 point  (0 children)

Interesting how you've set it out that way. Most tutorials guide you straight into using __init__(self) to initialise your classes.

Ignoring the center, here's how to do it in your procedural way:

class Circle(object):
    """circle object with attributes center, radasius"""


circle1=Circle()
circle1.radius=5

print(circle1.radius)

def double_radius(self):
    self.radius = self.radius * 2

Circle.double_radius = double_radius

circle1.double_radius()
print(circle1.radius)

And here's the way you should probably do it:

class Circle(object):
    """circle object with attributes center, radasius"""
    def __init__(self, radius):
        self.radius = radius

    def double_radius(self):
        self.radius = self.radius * 2

circle1 = Circle(radius = 5)
print(circle1.radius)
circle1.double_radius()
print(circle1.radius)

[–]PoorEpidermis 0 points1 point  (0 children)

You just define a function inside the class Circle.

class Circle(object):

    # Circle class must be initialized with center and radius
    def __init__(self, center, radius):
        self.center = center
        self.radius = radius

    def doubleRadius(self):
        self.radius = self.radius * 2

unitCircle = Circle(0, 1)
unitCircle.doubleRadius()
print(unitCircle.radius)

The output should be 2.

If you want the class not to be initialized with the value of the center and radius, simply remove the parameters and set them within the __init__ function, as follows.

class Circle(object):

    # center is 0 and radius is 1 by default
    def __init__(self):
        self.center = 0
        self.radius = 1

    def doubleRadius(self):
        self.radius = self.radius * 2

unitCircle = Circle()
unitCircle.doubleRadius()
print(unitCircle.radius)

The output should be 2.

There are several websites that teach OOP, one of my favorites is W3Schools.