Python methods
Created By: chatGPT
Methods in Python are functions that are associated with an object. They are a key feature of object-oriented programming. A method is called on an instance of a class and can modify the object's state or perform actions related to that object. Here's a simple example of defining and using methods in a class.
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
return f'{self.name} says woof!'
my_dog = Dog('Buddy')
print(my_dog.bark()) # Output: Buddy says woof!
In Python, you can define instance methods, class methods, and static methods. Instance methods are the most common and operate on an instance of the class. Class methods, identified with the
@classmethod
decorator, operate on the class itself. Static methods, identified with the @staticmethod
decorator, do not operate on an instance or class but can be called on either.class MyClass:
class_variable = 'Hello'
@classmethod
def class_method(cls):
return cls.class_variable
@staticmethod
def static_method(arg):
return f'Static method received: {arg}'
print(MyClass.class_method()) # Output: Hello
print(MyClass.static_method('test')) # Output: Static method received: test
To define a method, you need to use the
def
keyword, followed by the method name and parentheses. If the method takes parameters, you should define them within those parentheses. The first parameter for instance methods is typically self
, which refers to the instance calling the method.class Calculator:
def add(self, a, b):
return a + b
def subtract(self, a, b):
return a - b
calc = Calculator()
print(calc.add(5, 3)) # Output: 8
print(calc.subtract(10, 4)) # Output: 6
You can also create getter and setter methods for encapsulation, ensuring that the internal state of an object can only be changed by methods, which can include validation or other logic. Python provides a special mechanism to define properties using the
@property
decorator.class Person:
def __init__(self, name):
self._name = name # Using underscore for a private variable
@property
def name(self):
return self._name
@name.setter
def name(self, value):
if not isinstance(value, str):
raise ValueError('Name must be a string')
self._name = value
p = Person('Alice')
p.name = 'Bob'
print(p.name) # Output: Bob