در این ویدیو در مورد متدهای 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 باشد.



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

رایگان

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

دوره آموزش داکر
دوره آموزش داکر
تکمیل ضبط
امیرحسین بیگدلو
دوره آموزش طراحی دیتابیس
دوره آموزش طراحی دیتابیس
تکمیل ضبط
امیرحسین بیگدلو
دوره آموزش الگوریتم‌نویسی در پایتون
دوره آموزش الگوریتم‌نویسی در پایتون
تکمیل ضبط
امیرحسین بیگدلو



ارسال نظر


حمیده ریاحین

2 هفته قبل پاسخ به نظر

سلام استاد
عالی تدریس کردین من 2 پکیج خریدم درباره آموز ش پایتون اما مبحث کلاس برام جا نیفتاده بود ، شیوایی کلامتون در تدریس عالیه .

ممنونم

ارسال نظر



سروش

3 ماه قبل پاسخ به نظر

سلام
چقدر خفن درس میدی مرسی

ارسال نظر



amir

7 ماه قبل پاسخ به نظر

مثل همیشه عالی. دمت گرم

ارسال نظر



محسن

8 ماه قبل پاسخ به نظر

سلام
متشکرم بابت زحمتی که برای تهیه‌ی این دروس کشیدید.
سوالی دارم:
آیا دو خط زیر معادل هم هستند؟ خروجی‌شان یکی‌ست:
()p2.show که p2 یک آبجکت و show تابع است.
print (Person.show(p2)) که person یک کلاس و show یک تابع است.
من از روش دوم (خط دوم) استفاده می‌کنم. منطق خط اول رو متوجه نمیشم. میشه مختصر توضیحی بفرمایید؟

ارسال نظر



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

8 ماه قبل

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

عباس

9 ماه قبل پاسخ به نظر

دمت گرم در خصوص تفاوت کلاس متد و استاتیک متد خیلی ساده
و قابل فهم توضیح داد

ارسال نظر



Shahab

9 ماه قبل پاسخ به نظر

سلام.
بسیار ممنونم از زحمتی که کشیدید برای تهیه این همه ویدیو مفید. واقعا استفاده کردم.

ارسال نظر



Mohammadam

1 سال قبل پاسخ به نظر

با اجازتون من ویدیو ها رو دانلود میکنم. راضی باشید :)

ارسال نظر



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

1 سال قبل

سلام
خواهش میکنم. هر ویدیویی که دوست دارید رو میتونید دانلود کنید

sam

1 سال قبل پاسخ به نظر

درود بر شرافتت که زحمت کشیدی و داری آموزش میدی.درود بر شرافتت

ارسال نظر



mamali

1 سال قبل پاسخ به نظر

agha i love you dari

ارسال نظر



Alireza

1 سال قبل پاسخ به نظر

ممنون استاد
خیلی خوب توضیح دادید
به قدری خوب درک کردم که تونستم حتی سن رو از ورودی به is_adult ندم و از طریق کلاس بگیرمش

کدی که نوشتم
from datetime import datetime

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

def show(self):
print(self.name, self.height, self.birth_date)

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

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

p1 = Person.from_birth('Alireza', 180, 2001)
p1.show()
p1.is_adult()

ارسال نظر



Hossein

1 سال قبل پاسخ به نظر

سلام با سبک توضیحتون بشدت برام راحته اصلا انرژی میگیرم از اینکه تو آموزش بتونم ازتون جلو بیوفتم و واقعا آدم های مثل شما رو تو ذهنم همیشه نیاز داشتم

ارسال نظر



مریم

1 سال قبل پاسخ به نظر

وقتتون بخیر
بسیار ممنون بابت آموزشهای بسیار عالیتون.
بسیار مفید و کاربردی هستن.
من دنبال آموزش نمودار سازی،متلب ، visulisierung هستم ولی پیدا نکردم
و متاسفانه باکس سرچ هم نبود
ممنون میشم ازتون اگر من رو راهنمایی کنید.

ارسال نظر



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

1 سال قبل

سلام
همچین آموزشی ندارم

عاطفه

1 سال قبل پاسخ به نظر

ممنونم ازتون بالاخره تونستم یکم ذهنمو روشن کنم در مورد این موضوع

ارسال نظر



Hadi

1 سال قبل پاسخ به نظر

ممنون بابت اموزش هاتون
خیلی ساده و خلاصع میگید
فقط بعضی چیز هارو نگفتید
همه فیلم هاتونم دانلود کرده ام
باتشکر.

ارسال نظر



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

1 سال قبل

سلام
مثلا چی رو نگفتم؟

رامین

1 سال قبل پاسخ به نظر

آقا دس خوش

ارسال نظر



mojtaba

2 سال قبل پاسخ به نظر

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

ارسال نظر



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

2 سال قبل

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

محمد

2 سال قبل پاسخ به نظر

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

ارسال نظر



اشکان خوش باش

2 سال قبل پاسخ به نظر

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

ارسال نظر



S313

3 سال قبل پاسخ به نظر

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

ارسال نظر



مونگارد