[TehPUG] about " self " ...

Mehdy Khoshnoody mehdy.khoshnoody at gmail.com
Thu Jun 18 01:03:55 CEST 2015


سلام

شما فرض کن یه کلاس داری به اسم User:

class User(object):
    def __init__(self, name):
        self.name = name
    def say_hi(self):
        print("hey, {}!!".format(self.name))

خوب شما الان می‌تونی از این کلاس نمونه بسازی.
first_user = User(name="Abbas")
اتفاقی که تو کد بالا میوفته اینه که متد __init__ کلاس یوزر صدا زده میشه و
آرگومان‌هاش name="abbas" و self=first_user هست.
توی متد ما خاصیت name رو به self(first_user) اضافه کردیم و اونو برابر با
مقدار name قرار دادیم.

در نتیجه شما الان first_user تون یه خاصیت به اسم name داره که می‌تونید ازش
استفاده کنید.
print("hello, {}".format(first_user.name))
حالا شما فرض کن تو کلاس User یه متد بنویسی که همه‌ی نمونه‌هایی که از این
کلاس ساخته می‌شن این متد رو داشته باشن.
مثلا متد say_hello! می‌خوایم وقتی متد رو صدا زدیم به یوزر سلام کنه. خوب ما
که نمی‌دونیم الان کدوم نمونه از User این متد رو صدا زده (first_user,
second_user ,...). در نتیجه اینجا مفهوم self کاملا ملموسه! بهش می‌گیم مهم
نیست کدوم نمونه بود، همه‌ی نمونه‌ها name دارند. تو از name خوده(self) نمونه
استفاده کن.
وقتی کد زیر اجرا میشه
first_user.say_hi()
در واقع این اتفاق میوفته
User.say_hi(self=first_user)
پس وقتی این متد اجرا میشه self، که خود نمونه‌ی فعلی باشه برابر با
first_user هست و مقدار همه‌ی خواصی که در متد استفاده شده مربوط به
first_user خواهد بود.

و در یه جمله «self هرجای کلاس برابر نمونه‌ی فعلی است»

On Thu, Jun 18, 2015 at 1:21 AM Abbas Aghasy <hlmaz8080 at gmail.com> wrote:

> سلام به همه ی دوستان !
> میشه به من بگید کار self چیه ؟! کسی میتونه به طور کلی توضیح بده ؟! ممنون
> میشم اگه طوری بگید که من هم متوجه بشم چون من 3 ماهه که با پایتون کار میکنم
> ! خسته نباشد ! برای توضیح بیشتر این ویدیو رو هم نگاه کنید !
> _______________________________________________
> TehPUG mailing list
> Website: http://tehpug.ir
> List Address" TehPUG at python.org
> List Options: https://mail.python.org/mailman/listinfo/tehpug
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tehpug/attachments/20150617/881ca7cb/attachment.html>


More information about the TehPUG mailing list