به آموزشگاه مجازی سینا خوش آمدید!

آموزش متدهای کلاس در پایتون

امتیاز
(0)

متدها درواقع تابع‌هایی هستند که به یک کلاس تعلق دارند. آنها رفتار اشیاء ایجاد شده از کلاس را تعریف می‌کنند.

مثال شماره 1

ایجاد یک متد در یک کلاس:

class Person:
  def __init__(self, name):
    self.name = name

  def greet(self):
    print("Hello, my name is " + self.name)

p1 = Person("Emil")
p1.greet()

نتیجه:

Hello, my name is Emil
امتحان کنید

نکته: تمام متدها باید از کلمه‌ی self بعنوان اولین پارامتر خود استفاده کنند. 


متدها به همراه پارامترها

متدها می‌توانند مانند تابع‌های عادی، پارامترهایی را دریافت کنند:

مثال شماره 2

ایجاد یک متد به همراه پارامترها:

class Calculator:
  def add(self, a, b):
    return a + b

  def multiply(self, a, b):
    return a * b

calc = Calculator()
print(calc.add(5, 3))
print(calc.multiply(4, 7))

نتیجه:

8
28
امتحان کنید

دسترسی متدها به پروپرتی‌ها

متدها می‌توانند به پروپرتی‌های آبجکت با استفاده از کلمه‌ی کلیدی self دسترسی داشته باشند و آنها را اصلاح کنند(تغییر دهند):

مثال شماره 3

یک متد که به پروپرتی‌های آبجکت دسترسی دارد:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def get_info(self):
    return f"{self.name} is {self.age} years old"

p1 = Person("Tobias", 28)
print(p1.get_info())

نتیجه:

Tobias is 28 years old
امتحان کنید

متدهایی که پروپرتی‌ها را تغییر می‌دهند

متدها می‌توانند پروپرتی‌های یک آبجکت را تغییر دهند(اصلاح کنند):

مثال شماره 4

یک متد که مقدار یک پروپرتی را تغییر می‌دهد:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def celebrate_birthday(self):
    self.age += 1
    print(f"Happy birthday! You are now {self.age}")

p1 = Person("Linus", 25)
p1.celebrate_birthday()
p1.celebrate_birthday()

نتیجه:

Happy birthday! You are now 26
Happy birthday! You are now 27
امتحان کنید

بررسی متد __str__()

متد __str__() یک متد خاص است که کنترل می‌کند که وقتی آبجکت پرینت می‌شود، چه چیزی برگردانده(return) شده است:

مثال شماره 5

بدون متد __str__():

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("Emil", 36)

print(p1)

نتیجه:

<__main__.Person object at 0x15039e602100>
امتحان کنید

مثال شماره 6

با متد __str__():

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def __str__(self):
    return f"{self.name} ({self.age})"    

p1 = Person("Tobias", 36)

print(p1)

نتیجه:

Tobias (36)
امتحان کنید

استفاده از چند متد

یک کلاس می‌تواند چند متد داشته باشد که در کنار هم کار کنند:

مثال شماره 7

ایجاد چند متد در یک کلاس:

class Playlist:
  def __init__(self, name):
    self.name = name
    self.songs = []

  def add_song(self, song):
    self.songs.append(song)
    print(f"Added: {song}")

  def remove_song(self, song):
    if song in self.songs:
      self.songs.remove(song)
      print(f"Removed: {song}")

  def show_songs(self):
    print(f"Playlist '{self.name}':")
    for song in self.songs:
      print(f"- {song}")

my_playlist = Playlist("Favorites")
my_playlist.add_song("Bohemian Rhapsody")
my_playlist.add_song("Stairway to Heaven")
my_playlist.show_songs()

نتیجه:

Added: Bohemian Rhapsody
Added: Stairway to Heaven
Playlist 'Favorites':
- Bohemian Rhapsody
- Stairway to Heaven
امتحان کنید

حذف کردن متدها(Delete)

ما می‌توانیم با استفاده از کلمه‌ی کلیدی dal متدها را از کلاس‌ها حذف کنیم:

مثال شماره 8

حذف کردن یک متد از یک کلاس:

class Person:
  def __init__(self, name):
    self.name = name

  def greet(self):
    print("Hello!")

p1 = Person("Emil")

del Person.greet

p1.greet()  # این یک خطا ایجاد می کند

نتیجه:

Traceback (most recent call last):
  File "demo_class_method_delete.py", line 12, in <module>
AttributeError: 'Person' object has no attribute 'greet'
امتحان کنید

 


منبع: www.w3schools.com/python

 

  • بازدید: 24

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال