لطفا وارد شوید یا ثبت‌نام کنید تا به انجمن‌ها دسترسی کامل داشته باشید.



 
امتياز موضوع :
  • 0 رأي - معدل امتيازات : 0
  • 1
  • 2
  • 3
  • 4
  • 5
تابع super در پیتون دقیقا چکار میکنه؟
2013-02-09, 10:29 AM,
ارسال : #1
تابع super در پیتون دقیقا چکار میکنه؟
من یه قطعه کد دیدم که در زیر اومده:
کد :
class Logger(object):
    """
        General logger
    """

    def __init__(self):
        self._loggers = {}
        self._default_level = NOLOG
        self._handler = None
        logging.basicConfig()
        super(Logger, self).__init__()

تابع super() را جستجو کردم به این پست رسیدم که خوب توضیح خوبی داده، ولی واقعیتش در حدی نیستم که تفاوتش رو بفهمم، میشه یکی خلاصه و رون بگه مزیتش رو:

http://stackoverflow.com/questions/57616...it-methods

این هم کدی که توی آدرس بالا اومده و توضیح میده که این تابع چکار میکنه:

کد :
class Base(object):
    def __init__(self):
        print "Base created"

class ChildA(Base):
    def __init__(self):
        Base.__init__(self)

class ChildB(Base):
    def __init__(self):
        super(ChildB, self).__init__()

print ChildA(),ChildB()

Lenovo Thinkpad R61 , Arch 64Bit kernel 3.7, kde 4.10, chromium 25
<!-- m --><a class="postlink" href="http://ebrahimraeyat.blogfa.com/">http://ebrahimraeyat.blogfa.com/</a><!-- m -->
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2013-02-09, 10:46 PM,
ارسال : #2
Re: تابع super در پیتون دقیقا چکار میکنه؟
اگر از Inheritance استفاده نمی‌کنید، کاری با این دستور ندارید. اگر استفاده می‌کنید، کلاس پدر رو بازخوانی می‌کنه.


اکنون در ubuntu.ir با نام کاربری nixoeen فعال هستم.
وب‌سایت شخصی من
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2013-02-10, 04:57 PM,
ارسال : #3
Re: تابع super در پیتون دقیقا چکار میکنه؟
ممنون. این یه تیکه از کد یه ادیتور هست.

حرف شما درسته، منظور منم این هست که تفاوت یا بهتره بگم مزیت نوشتن برنامه به سبک کلاس childB نسبت به childA چیه؟

Lenovo Thinkpad R61 , Arch 64Bit kernel 3.7, kde 4.10, chromium 25
<!-- m --><a class="postlink" href="http://ebrahimraeyat.blogfa.com/">http://ebrahimraeyat.blogfa.com/</a><!-- m -->
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2013-02-11, 06:49 PM,
ارسال : #4
Re: تابع super در پیتون دقیقا چکار میکنه؟
تفاوتش این هست که مثلا اگر اسم کلاس پدر رو تغییر دادید، لازم نیست ۱۰۰ جای مختلف اون رو تغییر بدید، یا در هنگام نوشتن کد، لازم نیست برید ببینید اسم کلاس پدر چیه و اون رو بکار ببرید. کد هم خواناتر میشه، چون با دیدن ()super همه می‌دونن منظور چیه، ...


اکنون در ubuntu.ir با نام کاربری nixoeen فعال هستم.
وب‌سایت شخصی من
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ


رفتن به انجمن :


کاربران در حال مشاهده موضوع : 1 مهمان