اسم نمیبرم
ولی طرف دوره گذاشته، آموزش رزومه نویسی و چگونگی پیدا کردن بهترین موقعیت شغلی.
یکی از شما دوستان برای من فرستادید،
رفتم یک سرچی زدم دیدم طرف خودش هنوز کار گیر نیاورده و جایی کارآموز هست. (چون با حرفهاش مخالف بودم)
قبل از اینکه پول و وقت صرف این دورهها کنید، ی جستجو بزنید (خیلی خیلی مهمتر هست)
ولی طرف دوره گذاشته، آموزش رزومه نویسی و چگونگی پیدا کردن بهترین موقعیت شغلی.
یکی از شما دوستان برای من فرستادید،
رفتم یک سرچی زدم دیدم طرف خودش هنوز کار گیر نیاورده و جایی کارآموز هست. (چون با حرفهاش مخالف بودم)
قبل از اینکه پول و وقت صرف این دورهها کنید، ی جستجو بزنید (خیلی خیلی مهمتر هست)
✍31👍18😁6🤪6❤3🗿3🐳1
اینم چون دیدم خیلی از بچهها نمیدونند :
اگر شما هم مثل من بیشتر کارها رو با
انجام میدید و ممکنه توی چند هفته بیش از
مخصوصاً اینکه من
رو هم فعال کردم.
ی راهکار بگم بدون restart مصرف رم فایرفاکس رو کم کنید (بخصوص روی دیتاهای کش شده که دیگه نیازی بهش نداره) توی سرچ بار بزنید :
و توی صفحهای که باز میشه توی بخش
گزینه
و بعد از اون
رو بزنید.
بستگی به استفاده شما داره، ولی برای من معمولاً چند گیگ رم رو خالی میکنه.
بطور کلی
Hardware Acceleration
رو اگر خاموش کنید مصرف رم قطعاً بهینهتر و کمتر خواهد بود.
اگر شما هم مثل من بیشتر کارها رو با
Firefox انجام میدید و ممکنه توی چند هفته بیش از
sleep کردن سیستم کاری نتونید بکنید قطعاً مشکل Ram رو دیدید (روی سیستم من بعضی وقتا که خیلی سنگین استفاده میکنم، به ۱۵ گیگ - ۲۰ گیگ هم میرسه) مخصوصاً اینکه من
Hardware Acceleration رو هم فعال کردم.
ی راهکار بگم بدون restart مصرف رم فایرفاکس رو کم کنید (بخصوص روی دیتاهای کش شده که دیگه نیازی بهش نداره) توی سرچ بار بزنید :
about:memoryو توی صفحهای که باز میشه توی بخش
Free Memoryگزینه
GC (garbage collection)و بعد از اون
Minimize memory usage رو بزنید.
بستگی به استفاده شما داره، ولی برای من معمولاً چند گیگ رم رو خالی میکنه.
بطور کلی
Hardware Acceleration
رو اگر خاموش کنید مصرف رم قطعاً بهینهتر و کمتر خواهد بود.
👍33❤3⚡1
مقایسه داشته باشیم روی
داخل ایران و استانداردهایی که شرکتها یا استارتاپهای مطرح رعایت میکنند :
اول نسخه شرکتهای مطرح :
مدل مطرح بین شرکتهای ایرانی:
که خب معمولا در حد ۱-۲ صفحه میاد بدون هیچ جلسهای
خوشحال نباشید این قدم تو ایران فقط برای سختافزار و منابع مالی هست
یک راست میریم سراغ طراحی فرانت (معماری سیستم و ... اصلا معنی نداره تو اینجا؛ جزئیات که هیچ)
این قدم توی ایران هست به بکند میگن که چی میخوایم و چطوری باید پیاده بشه (برگای آدم میریزه)
بجای اینکه دیتابیس طراحی بشه و نیازمندی به بکند تسک بشه
به بکند میگن که دیتابیس رو خودت طراحی کن (برای همین هیچکدوم از شرکتهای مطرح ایرانی شناسنامه دیتابیس نداند) و نیازمندی رو هم خودمون بهت میگیم چطوری باید پیاده سازی بشه که همین دلیل ۹۰٪ عدم رعایت
تست نویسی اصلا مطرح نیست تو ایران تا زمانش بشه
پروتوتایپ هم همین هست (اگر مجبور نباشیم؛ نمیدیم)
معماری پروژه هیچوقت آپدیت نمیشه و بهبود پیدا نمیکنه فقط فیچر بهش میچسبه و اهمیتی هم نداره بعد از این چقدر معماری بدردنخور میشه چون هنوز کار میکنه.
اینو فقط بعنوان یک رفرنس میذارم (مطمئنم همهی شما هم تقریبا باهام همنظر هستید و چیزایی که گفتم رو دیدید توی ایران) که به وقت مدیر فنی شدن سعی کنید برای نسل بعدی یک چیزی رو درست کنید.
Software Design Steps
داخل ایران و استانداردهایی که شرکتها یا استارتاپهای مطرح رعایت میکنند :
اول نسخه شرکتهای مطرح :
1- Requirement Analysis
2- System Architecture Design (system design)
3- Detailed Design (Component design)
4- UI
5- Database design
6- Prototyping
7- Test Strategy
8- Regular design review / updates
* All above steps, must have documentation step in it.مدل مطرح بین شرکتهای ایرانی:
1- SRS (Software Requirements Specification)
که خب معمولا در حد ۱-۲ صفحه میاد بدون هیچ جلسهای
2- Requirement Analysisخوشحال نباشید این قدم تو ایران فقط برای سختافزار و منابع مالی هست
3- UI/UX Designیک راست میریم سراغ طراحی فرانت (معماری سیستم و ... اصلا معنی نداره تو اینجا؛ جزئیات که هیچ)
4- API Design این قدم توی ایران هست به بکند میگن که چی میخوایم و چطوری باید پیاده بشه (برگای آدم میریزه)
بجای اینکه دیتابیس طراحی بشه و نیازمندی به بکند تسک بشه
به بکند میگن که دیتابیس رو خودت طراحی کن (برای همین هیچکدوم از شرکتهای مطرح ایرانی شناسنامه دیتابیس نداند) و نیازمندی رو هم خودمون بهت میگیم چطوری باید پیاده سازی بشه که همین دلیل ۹۰٪ عدم رعایت
clean code هم هست 5- Deployتست نویسی اصلا مطرح نیست تو ایران تا زمانش بشه
پروتوتایپ هم همین هست (اگر مجبور نباشیم؛ نمیدیم)
معماری پروژه هیچوقت آپدیت نمیشه و بهبود پیدا نمیکنه فقط فیچر بهش میچسبه و اهمیتی هم نداره بعد از این چقدر معماری بدردنخور میشه چون هنوز کار میکنه.
اینو فقط بعنوان یک رفرنس میذارم (مطمئنم همهی شما هم تقریبا باهام همنظر هستید و چیزایی که گفتم رو دیدید توی ایران) که به وقت مدیر فنی شدن سعی کنید برای نسل بعدی یک چیزی رو درست کنید.
👍45❤5🤪3🗿3☃1⚡1
https://t.iss.one/pyHints?boost
درصورت فعال شدن استوری
ازین قابلیت برای معرفی کتاب استفاده میکنیم
(هفتگی یا ماهانه)
درصورت فعال شدن استوری
ازین قابلیت برای معرفی کتاب استفاده میکنیم
(هفتگی یا ماهانه)
Telegram
Python Hints
از این کانال حمایت کنید تا بتواند به قابلیتهای اضافی دسترسی پیدا کند.
👍74👎18❤4
The Music Played
Matt Monro
❤🔥9👎3👌2🍾2❤1
Python Hints
#خارج_از_بحث احتمالا شما هم با anti-adblock detector یوتیوب مواجه شدید و متوجه شدید تقریبا هیچکدوم از adblocker های معروف نمیتونند دورش بزنند. شخصا دنبال این بودم که popup مربوط به بلاک شدن adblocker رو فیلتر کنم (اینجوری دیگه اخطار نمیاد و ویدئو رو میشه…
این تکنیک همچنان جواب میده
اگر ارور یا
بخاطر این هست که باقی ادبلاکرهایی که دارید هم فعال هست (اونهارو روی سایت یوتیوب
اگر ارور یا
popup یا .... دیدیدبخاطر این هست که باقی ادبلاکرهایی که دارید هم فعال هست (اونهارو روی سایت یوتیوب
pause کنید)👍7
من راجب
این کد رو یکی از اعضا فرستاده (درحال code review این کد رو دیده)
یکی از دلایلی که
رو استفاده میکنیم این هست که دیگه
باقی مشکلات رو شما بگید (به اکثر موارد قبلاً اشاره شده توی کانال)
repr, str , ... صحبت کردم.این کد رو یکی از اعضا فرستاده (درحال code review این کد رو دیده)
@dataclassی مورد رو من بگم و بعد سکوت کنم :
class CasbinRuleEntity:
id: typing.Optional[int] = None
ptype: typing.Optional[str] = None
v0: typing.Optional[str] = None
v1: typing.Optional[str] = None
v2: typing.Optional[str] = None
v3: typing.Optional[str] = None
v4: typing.Optional[str] = None
v5: typing.Optional[str] = None
def __str__(self):
arr = [self.ptype]
for v in (self.v0, self.v1, self.v2, self.v3, self.v4, self.v5):
if v is None:
break
arr.append(v)
return ', '.join(arr)
def __repr__(self):
return '<CasbinRule {}: "{}">'.format(self.id, str(self))
یکی از دلایلی که
@dataclass رو استفاده میکنیم این هست که دیگه
repr بدرد نخور ننویسیم.باقی مشکلات رو شما بگید (به اکثر موارد قبلاً اشاره شده توی کانال)
🤔14👍9❤2🍓2⚡1👎1🔥1😱1🆒1
Python Hints
من راجب repr, str , ... صحبت کردم. این کد رو یکی از اعضا فرستاده (درحال code review این کد رو دیده) @dataclass class CasbinRuleEntity: id: typing.Optional[int] = None ptype: typing.Optional[str] = None v0: typing.Optional[str] = None v1:…
دوستان به موارد زیادی اشاره کردند اما گفتم یکبار هم خودم همهی آن چیزی که توی کد ریویو انجام میدم رو بگم :
۱- وقتی کلاس یا تابع تعریف میکنید که خودش یا اجزا تشکیل دهندهاش مشخص نیست حتما باید داکیومنت یا کامنت داشته باشه
بدترین اسامی هست که میشه انتخاب کرد؛ چون برنامه نویس داره فرض میکنه که همهی افرادی که کد رو میخونند بیزینس رو بخوبی میشناسند.
۲- استفاده از
۳- از
۴- حالا که نوشته شده
در انتهای خروجی به
۵- داخل
عدم استفاده از
عدم استفاده از
فرمت اشتباه؛ خروجی
۶- خورد
من حتی به این حالت هم فکر کردم که چون تعداد متغییرها زیاد بوده برنامهنویس خواسته از یک جایی به بعد
تقریبا ۲۰ خط کد بود و ۳۰ خط ایراد.
۱- وقتی کلاس یا تابع تعریف میکنید که خودش یا اجزا تشکیل دهندهاش مشخص نیست حتما باید داکیومنت یا کامنت داشته باشه
v0, v1, v2 , ...بدترین اسامی هست که میشه انتخاب کرد؛ چون برنامه نویس داره فرض میکنه که همهی افرادی که کد رو میخونند بیزینس رو بخوبی میشناسند.
۲- استفاده از
typing optional در اینجا درست نیست مخصوصا که برای همهی موارد تکرار شده و به همهی موارد دیفالت None داده شده؛ حتی اگر همین کد رو بخوایم نگه داریم این راهکارها بهتر خواهد بود :v0: str | None
v0: typing.Union[str, None]۳- از
dataclass هیچ استفادهای نشده (frozen, ordering, slot , ....) حتی از ویژگیهای حالت سادهترش هم استفاده نشده؛ مثل پیاده سازی __methods__ که یعنی __repr__ و __str__ نیازی نبود نوشته بشه.۴- حالا که نوشته شده
__repr__در انتهای خروجی به
str(self) رو داره و این یعنی برنامه نویس سواد نوشتن __repr__ درست رو نداشته و چون توی حلقه بینهایت میوفته مجبور شده که __str__ رو هم پیادهسازی کنه۵- داخل
__repr__ همه چیز پر از ایراد هست (تمام موارد رو قبلا بررسی کردیم تو کانال) :عدم استفاده از
qualname , هاردکد کردن اسم کلاسعدم استفاده از
r! جهت نمایش درست تایپهای داخلیفرمت اشتباه؛ خروجی
__repr__ رو برای ساخت مجدد آبجکت از کلاس نمیشه استفاده کرد.۶- خورد
__str__ کلا سوال هست؛ نوشتاری که تمیز نیست؛ هدفش مشخص نیست و ....من حتی به این حالت هم فکر کردم که چون تعداد متغییرها زیاد بوده برنامهنویس خواسته از یک جایی به بعد
... نشون بده مثل کاری که numpy , .... میکنند؛ که اگر هدف هم این بوده پیاده سازی اشتباهی انجام داده و با یک جستجوی ساده حتی میتونسته به راهکار درست برسه reprlib builtin module تقریبا ۲۰ خط کد بود و ۳۰ خط ایراد.
👍105❤🔥6🤷♂6👌5⚡2🔥1
Reaction
روی پستها لطفاً فراموش نشه، کمک میکنه بدونم کدوم مطالب رو دیگه نیازی نیست راجبش توضیح بدم و ....
روی پستها لطفاً فراموش نشه، کمک میکنه بدونم کدوم مطالب رو دیگه نیازی نیست راجبش توضیح بدم و ....
✍25👍15❤11👎2🤷♂1🫡1
لطفاً پیامهای پین شده کانال رو بخونید 🌹
به لطف شما عزیزان, کانال قابلیت استوری گذاشتن داره
و سعی میکنم ازین قابلیت برای معرفی کتابها استفاده کنم
تا دوستان به راحتی بتونند کتابها رو پیدا کنند.
همونطور که قبلاً گفتم، فقط و فقط کتابهایی رو معرفی میکنم که شخصاً خوندم و بنظرم مفید بوده.
اما، قابلیت استوری و ... بستگی به
https://t.iss.one/pyHints?boost
هر وقت قابلیت Story نداشته باشیم، معرفی کتاب روی توییتر انجام خواهد شد.
پیشنهاد میکنم اکانت کانال رو داشته باشید.
Twitter: https://twitter.com/pyhints
به لطف شما عزیزان, کانال قابلیت استوری گذاشتن داره
و سعی میکنم ازین قابلیت برای معرفی کتابها استفاده کنم
تا دوستان به راحتی بتونند کتابها رو پیدا کنند.
همونطور که قبلاً گفتم، فقط و فقط کتابهایی رو معرفی میکنم که شخصاً خوندم و بنظرم مفید بوده.
اما، قابلیت استوری و ... بستگی به
Boost کانال داره که محدودیت زمانی هم داره این ویژگی (تلگرامم باید پول دربیاره دیگه) اگر دوست داشتید میتونید کانال رو boost کنید تا این حرکت رو ادامه بدم.https://t.iss.one/pyHints?boost
هر وقت قابلیت Story نداشته باشیم، معرفی کتاب روی توییتر انجام خواهد شد.
پیشنهاد میکنم اکانت کانال رو داشته باشید.
Twitter: https://twitter.com/pyhints
Telegram
Python Hints
از این کانال حمایت کنید تا بتواند به قابلیتهای اضافی دسترسی پیدا کند.
👍48❤10🍾6👎3
آقا من نمیدونم این به گوش بچههای طراح سایت اینترنت مخابرات میرسه یا نه
یا مثلاً مدیر فنی و ... (قبلاً این اتفاق افتاده چون)
ولی دوست دارم شما همگی بدونید؛
مودم من به یک مشکلی خورده بود و بنا به دلایلی رفتم پسورد اینترنت رو تغییر دادم، برای امنیت بیشتر کاراکتر ' رو داخل پسورد گذاشتم، اتفاقی که افتاد این بود
فرض کنید پسوردی که من زدم این بود :
P
سایت مخابرات چی توی دیتابیس برای مچ کردن گذاشته بنظرتون ؟! 🤣😂
اول اینکه
یعنی : پسورد رو نرمالایز کردن حروف بزرگ رو کردن کوچیک بعد
شما ببین سایتای ایرانی رو کیا کد میزنند. 😂🤣😂
یا مثلاً مدیر فنی و ... (قبلاً این اتفاق افتاده چون)
ولی دوست دارم شما همگی بدونید؛
مودم من به یک مشکلی خورده بود و بنا به دلایلی رفتم پسورد اینترنت رو تغییر دادم، برای امنیت بیشتر کاراکتر ' رو داخل پسورد گذاشتم، اتفاقی که افتاد این بود
فرض کنید پسوردی که من زدم این بود :
P
yhints2023'24سایت مخابرات چی توی دیتابیس برای مچ کردن گذاشته بنظرتون ؟! 🤣😂
اول اینکه
hash، نشده و اصل پسورد رو برام فرستادند اما چی بنظرتون بود پسورد : \"pyhints2023\'24\"یعنی : پسورد رو نرمالایز کردن حروف بزرگ رو کردن کوچیک بعد
' رو escape کرده توی دیتابیس گذاشتن و چون ' توی پسورد داشتم از " اطرافش استفاده کردند و همونجوری توی دیتابیس گذاشتن شما ببین سایتای ایرانی رو کیا کد میزنند. 😂🤣😂
😱35😁15😐13🤔4🤯3🗿3👍2👨💻1🆒1
خوانش گروهی کتاب
به فصل ۱۳ رسید (عضو جدید نمیگیره گروه)
Interfaces, Protocol and ABCs
داشتم راجب همین موضوع پیش گروهی دیگر از دوستان صحبت میکردم که متوجه شدم خیلی از بچهها با این مفاهیم آشنا هستند، اما کاربرد درستش رو نمیدونند حتی بچههایی که پایتون رو تا سطح بالایی دنبال کردند.
برای همین تصمیم گرفتم توی پستهای بعدی این مفاهیم رو با مثال توضیح بدم، منظورم از این مفاهیم :
هست.
پ.ن : اگر مورد دیگری هست که فکر میکنید جا افتاده زیر همین پست کامنت کنید توضیح میدم حتماً 🌹
Fluent Pythonبه فصل ۱۳ رسید (عضو جدید نمیگیره گروه)
Interfaces, Protocol and ABCs
داشتم راجب همین موضوع پیش گروهی دیگر از دوستان صحبت میکردم که متوجه شدم خیلی از بچهها با این مفاهیم آشنا هستند، اما کاربرد درستش رو نمیدونند حتی بچههایی که پایتون رو تا سطح بالایی دنبال کردند.
برای همین تصمیم گرفتم توی پستهای بعدی این مفاهیم رو با مثال توضیح بدم، منظورم از این مفاهیم :
Interface, Duck typing, Goose typing, Static typing, Static Duck typing, ABC, Protocol,Static Protocol, Monkey patching, polymorphic interface, Structural typing, ....هست.
پ.ن : اگر مورد دیگری هست که فکر میکنید جا افتاده زیر همین پست کامنت کنید توضیح میدم حتماً 🌹
👍52🙏6⚡2💋2❤🔥1
Python Hints
خوانش گروهی کتاب Fluent Python به فصل ۱۳ رسید (عضو جدید نمیگیره گروه) Interfaces, Protocol and ABCs داشتم راجب همین موضوع پیش گروهی دیگر از دوستان صحبت میکردم که متوجه شدم خیلی از بچهها با این مفاهیم آشنا هستند، اما کاربرد درستش رو نمیدونند حتی بچههایی…
Duck typing, Dynamic Protocolرو میشه با هم نشون داد؛ ی جمله معروف داره که همه بلد هستند اما خیلی ها مفهومش رو نمیدونند
Duck typing :If it looks like a duck and quacks like a duck, it’s a duck.چیزی که این جمله سعی داره بگه اینه که؛
برای ما مهم نیست object کدوم کلاس هستی اگر این متدها و فانکشنالیتی ها رو داری عضوی از ما هستی.
ما برنامه نویسها همیشه
Duck type mode هستیم بصورت پیشفرض؛ برای ما فرقی نمیکنه طرف رشته کامپیوتر خونده یا حقوق و حسابداری و ... یا اصلا درس نخونده برای ما مهم هست که طرف توانایی کد زدن داشته باشه و اگر بتونه این کار رو به خوبی انجام بده بهش لقب برنامه نویس میدیم.
پس توی
Duck typing اولویت متدها هستند و نه خروجی isinstance👍63❤🔥3🙏3⚡1👎1😁1💋1😈1👾1
Python Hints
Duck typing, Dynamic Protocol رو میشه با هم نشون داد؛ ی جمله معروف داره که همه بلد هستند اما خیلی ها مفهومش رو نمیدونند Duck typing :If it looks like a duck and quacks like a duck, it’s a duck. چیزی که این جمله سعی داره بگه اینه که؛ برای ما مهم نیست object…
Dynamic Protocol
هم از همین مفهموم استفاده میکنه؛ اگر یادتون باشه قبلا راجب پروتوکل مربوط به Sequence صحبت کردیم و گفتیم که اگر یک
class متدهای __len__, __getitem__رو داشته باشه میتونیم بعنوان
Sequence Protocol رو رعایت میکنه و پایتون میتونه مثل Sequence باهاش رفتار کنه و برخی از فانکشنالیتیهایی که پیاده سازی هم نکردیم رو بهش بده.Dynamic Protocol
ی قدم جلوتر میره و میگه اگر قرار نیست
len اون آبجکت رو بگیری پس نیازی نیست توی اون کلاس حتی __len__ رو پیاده سازی کنی و صرف وجود __getitem__ من بهت یک سری ویژگیهای Sequence رو میدم؛ ویژگیهایی که فقط به __getitem__ نیاز داره و نه چیز دیگه.توی مثال تصویر قبل؛ من هیچوقت
__iter__ رو پیادهسازی نکردم اما میتونم روی dp از for loop استفاده کنم؛ به لطف Duck typing, Dynamic Protocolپایتون از
__getitem__ استفاده میکنه و با شروع از اندیس 0 میتونه کار __iter__ رو انجام بده و for loop بهمون خروجی خواهد داد.برای
in هم موضوع همین هست؛ توی کد قبلی من هیچوقت __contain__ رو پیادهسازی نکردم اما 9 in dpخروجی میده (اینبار هم پایتون از
__getitem__ بعنوان fallback برای __contain__ استفاده میکنه)بحثی که پیش میاد اینه که؛ آیا این موضوع اتفاق خوبی هست ؟
نه همیشه؛ خیلی وقتها میشه نسخه
optimize شده تری رو نوشت مثلاْ توی کد قبلی اگر من لیست رو بصورت sort قرار باشه داشته باشم همیشه میتونم بجای __contain__ که خود پایتون بهم میده و linear search هست که مرتبه زمانی O(n) داره از Binary Search استفاده کنم و مرتبه زمانی رو تا O(log n) کاهش بدم.اما تا وقتی نیازی به بهبود ندارم؛ هیچوقت
__contain__ یا ... رو خودم پیادهسازی نمیکنم و از آنچه که پایتون بهم ارائه میده استفاده میکنم (اینطوری نه نیاز به تست هست؛ نه باگ ازش در میاد و کد تمیزتری هم خواهم داشت)👍48❤🔥5⚡2
Python Hints
خوانش گروهی کتاب Fluent Python به فصل ۱۳ رسید (عضو جدید نمیگیره گروه) Interfaces, Protocol and ABCs داشتم راجب همین موضوع پیش گروهی دیگر از دوستان صحبت میکردم که متوجه شدم خیلی از بچهها با این مفاهیم آشنا هستند، اما کاربرد درستش رو نمیدونند حتی بچههایی…
Goose Typing
رو بعنوان
runtime type check بهش اشاره میکنند؛ دلیلش هم توی عکس واضح هست.اما دقت کنید که من برای
isinstance از from collection.abc import Sequence
چرا این مورد وجود داره؛ برطرف کردن مشکلاتی که
Duck typing بوجود میاره همونطور که دیدیم برای duck typing تکمیل بودن تمام متدها اهمیتی نداره.همینجا یک نکتهای رو بگم؛ توی پایتون استفاده بیش از اندازه از
isinstance , issubclass, hasattr اصلا چیز خوبی نیست و به قول معروف code smell هست (برای دلیلش میتونید راجب __subclasshook__ بخونید.)با این همه؛
goose typing جایگاهی مطمئنتر از duck typing برای تست پیادهسازی کامل یک Interface بهمون میده و همیشه هم باید به یک ABC برسه (پیادهسازی درست و اصولی)👍26❤5⚡2
Python Hints
Goose Typing رو بعنوان runtime type check بهش اشاره میکنند؛ دلیلش هم توی عکس واضح هست. اما دقت کنید که من برای isinstance از from collection.abc import Sequence چرا این مورد وجود داره؛ برطرف کردن مشکلاتی که Duck typing بوجود میاره همونطور که دیدیم برای…
اول با تصویر ۲ شروع کنیم (بالای کد 2 کامنت شده)
از دیگر مزایای
دقت کنید اگر من
برای رفع این مشکل پایتون و
پس برای همین
از دیگر مزایای
Goose typing همین مورد هست وقتی برای اطمینان از Interface میاید و کلاسهای فریمورکی که مینویسید رو به ABC ها وصل میکنید (منظورم Inheritance هست).دقت کنید اگر من
__len__ رو پیادهسازی نکنم بهم ارور میده؛ به عمد ارور رو گذاشتم که باهاش آشنا بشید.برای رفع این مشکل پایتون و
Goose Typing و البته ABC من رو مجبور میکنند که __len__ رو پیادهسازی کنم.پس برای همین
runtime type checking هم داریم توی پایتون اما مفهومش با زبانهای دیگه کمی فرق داره که حالا همگی دلیلش رو میدونیم.👍24❤4⚡3