آموزش class method و static method در پایتون

May 2022


در این ویدیو در مورد متدهای class method و static method و instance method صحبت میکنیم. در زمان کار با کلاس های پایتون سه نوع متد وجود دارد که میتوانید از آنها استفاده کنید. این متدها با اهداف مشخصی استفاده میشوند که در این ویدیو با هر سه آنها آشنا خواهید شد.

 

 

 #  instance method در پایتون

در پایتون instance method به متدهای عادی گفته میشود که در کلاس‌ها وجود دارد. در پایین یک کلاس به نام Person داریم که در متد init آن، نام و قد افراد را ذخیره میکنیم. یک متد هم به نام show داریم که نام و قد فرد را چاپ میکند.

 

در آخر کد نیز یک آبجکت از کلاس Person ساخته و مقداردهی کرده ایم:

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

	def show(self):
		print(f'{self.name} is {self.height}')

p = Person('amir', 180)
p.show()

# output
amir is 180

 

در کد بالا، زمانی که با آبجکت p متد show را صدا میزنید، به طور اتوماتیک آبجکت p به عنوان اولین آرگومان به متد show ارسال میشود. به عبارت دیگر، آرگومان self که در متد show وجود دارد همان آبجکت p است. متد show یک instance method است. به متدهایی که اولین آرگومان آنها همان آبجکت است، instance method گفته میشود.

 

 

 #  class method در پایتون

برخلاف instance methodها که آبجکت را به عنوان اولین آرگومان میگرفتند، class methodها خود کلاس را به عنوان اولین آرگومان‌ میگیرند. مثال را بالا تغییر داده و به شکل زیر در می‌آوریم:

import datetime

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

	def show(self):
		print(f'{self.name} is {self.height} is {self.age}')

	@classmethod
	def from_birth(cls, name, height, age):
		return cls(name, height, datetime.datetime.now().year - age)


p = Person.from_birth('amir', 180, 1990)
p.show()

 

برای ایجاد کردن class method باید از دکوراتور classmethod استفاده کنید. در زمان ساخت class method دیگر نیازی به self به عنوان اولین آرگومان ندارید و از cls استفاده میکنید که اشاره به خود کلاس دارد.

 

در کد بالا متد from_birth را اضافه کردیم که با دکوراتور classmethod آنرا به یک class method تبدیل کرده ایم. اولین آرگومانی که میگیرد cls است که اشاره به کلاس Person دارد.

 

 

 #  static method در پایتون

متدهای static برخلاف متدهای class و instance هیچ مقداری را به عنوان اولین آرگومان نیاز ندارند. متدهای static متدهایی هستند که از نظر منطقی شبیه به کلاس مورد استفاده دارند اما نیازی به آبجکت یا خود کلاس ندارند:

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

	@staticmethod
	def is_adult(age):
		if age > 18:
			print('yes')
		else:
			print('no')

Person.is_adult(23)

 

در کد بالا متد is_adult سن را گرفته و مشخص میکند که آیا بزرگسال است یا خیر. این متد هیچ نیازی به آبجکت یا کلاس ندارد، پس میتواند یک instance method باشد.


5:47:36


0

Intro

10:38

رایگان

1

Variable

12:30

رایگان

2

String

19:22

رایگان

3

List

8:46

رایگان

4

While

9:6

رایگان

5

If

8:37

رایگان

6

For

6:12

رایگان

7

range

4:17

رایگان

8

break, continue, pass

9:15

رایگان

9

Function

12:32

رایگان

10

List methods

12:11

رایگان

11

Tuple

8:29

رایگان

12

Set

7:47

رایگان

13

Dictionary

9:19

رایگان

14

Module

10:40

رایگان

15

fstring

5:35

رایگان

16

format

7:34

رایگان

17

File

17:14

رایگان

18

Scope

6:25

رایگان

19

OOP

12:15

رایگان

20

Method

20:19

رایگان

21

class/instance variable

14:7

رایگان

22

class/static method

13:25

رایگان

23

Inheritance

17:6

رایگان

24

Special methods

9:50

رایگان

25

Access points

11:12

رایگان

26

property

6:54

رایگان

27

Exceptions

21:17

رایگان

28

Standard library

12:51

رایگان

29

Docstring

10:49

رایگان

30

Virtualenv

11:2

رایگان


دوره‌های پیشنهادی

دوره اول آموزش جنگو(django)

دوره اول آموزش جنگو(django)

دوره آموزش GraphQL در پایتون

دوره آموزش GraphQL در پایتون

دوره آموزش Celery

دوره آموزش Celery

ارسال نظر

تلاش میکنم سوالات شما را در کمتر از یک روز پاسخ بدم

mojtaba

November 2021

سلام می خواهم class method دانلود کنم ولی نمی شه امکان دانلود از سایت شما وجود نداره؟

ارسال نظر


امیرحسین بیگدلو

November 2021

سلام
خیر. هیچ ویدیویی از سایت قابل دانلود نیست.

محمد

November 2021

اراِِِیه عالی

ارسال نظر


اشکان خوش باش

August 2021

من همین مثال رو توی اینترنت پیدا کردم ولی 20 % کارو متوجه نشدم
دیگه با توضیحات خوبتون کامل متوجه شدم

ارسال نظر


S313

April 2021

خیلی خیلی دمت گرم عالی بود

ارسال نظر