<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های iammohammadhejazi</title>
        <link>https://virgool.io/feed/@iammohammadhejazi</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-17 07:24:22</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/462454/avatar/virckx.png?height=120&amp;width=120</url>
            <title>iammohammadhejazi</title>
            <link>https://virgool.io/@iammohammadhejazi</link>
        </image>

                    <item>
                <title>شئ گرایی با پایتون قسمت 2 - OOP in Python</title>
                <link>https://virgool.io/@iammohammadhejazi/%D8%B4%D8%A6-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-2-oop-in-python-u5xzx8vrvxqz</link>
                <description>شئ گرایی با پایتون - قسمت دومبا سلام در ادامه مقاله قبلی که در مورد همین موضوع (برنامه نویسی شئ گرا در پایتون) بود در رابطه با ساخت کلاس - ساخت متد و متد سازنده حرف زدیم - (مقاله قبلی)در این مقاله با class variable ، instance variable همچنین  استاتیک متد  و کلاس متد آشنا خواهیم شد.تعریف Class Variable:متغیرهای کلاس و متغییر های شئ(object) معمولا با هم استفاده میشوند!اما تفاوت اصلی چیه؟تمامی نمونه(instance) های ساخته شده از کلاس به صورت پیشفرض متغییرهای کلاسی رو دارند.در صورت تغییر متغییر کلاسی تمامی متغییر ها در اشیا ساخته شده نیز تغییر میکند.نکته: این اتفاق وقتی که مقدار این متغیر را از شئ تغییر بدهیم رخ نمیدهدمتغیر های سطح آبجکت(instance variable) رو هم باهاش آشناییت دارید(self.some = 2)یه نقل و قول از لینوس توروالدز هست که میگه:  &quot; Talk is cheap, Show me the code &quot;پس میریم سر اصل مطلب:class Person:
    age = 30         # Class Variable
    def __init__(self,name):
        self.name = name        # instance varibale

p1 = Person(&#039;mohammad&#039;)
print(p1.age)     # 30
p2 = Person(&#039;ali&#039;)
print(p2.age)     # 30
Person.age = 25
print(p1.age)     # 25
print(p2.age)     # 25
p2.age = 27
print(p2.age)     # 27
print(p1.age)     # 25
Person.age = 20
print(p1.age)     # 20
print(p2.age)     # 27
خب همونطور که میبینید  همه شئ های ساخته شده از کلاس Person دارای attribute خود کلاس به نام age هستند و با تغییر این attribute این مقدار در تمامی شئ ها تغییر میکند مگر اینکه در یکی از این اشیا ساخته شده مقدار جدیدی به آن تخصیص داده شود.کلاس متد - class method:برخلاف instance method ها که به عنوان اولین پارامتر ورودی آبجکت را میگیرند کلاس متد ها به عنوان پارامتر اول ورودی خود کلاس را میگیرند.برای تعریف یک کلاس متد میتوانیم از دکوراتور classmethod استفاده کنیم. به مثال زیر توجه کنید.class Person:
    state = &#039;&#039;
    @classmethod
    def change_state(cls, new_state):
        cls.state = new_state
برای استفاده از کلاس متد ها نیازی به ساخت آبجکت از کلاس نیست و میتوان مستقیما آن را با استفاده از خود کلاس صدا کرد همچنین از نمونه ساخته شده نیز میتوان استفاده کرد.استاتیک متد - Static method:استاتیک متد ها پارامتر های self, cls را نمیگیرند و عملیاتی که انجام میدهند محدود به اطلاعات ورودی آن هاست برای استفاده از این متد ها نیاز به ساخت ابجکت یک کلاس نیست. با استفاده از دکوراتور staticmethod تعریف میشود به مثال زیر توجه کنید.class Math:
    @staticmethod
    def is_pass(score):
        if score &gt;= 12:
                return True
        return Falseما میتوانیم با استفاده از کلاس به این متد دسترسی داشته باشیم و هیچ تغییری در کلاس یا ابجکت ساخته شده ایجاد نمیکنیم.</description>
                <category>iammohammadhejazi</category>
                <author>iammohammadhejazi</author>
                <pubDate>Mon, 04 Oct 2021 13:17:39 +0330</pubDate>
            </item>
                    <item>
                <title>شی گرایی با پایتون - OOP in Python</title>
                <link>https://virgool.io/@iammohammadhejazi/%D8%B4%DB%8C-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-oop-in-python-ms4hoy0o01b2</link>
                <description>شی گرایی با پایتونشئ گرایی چیست؟یک شیوه برنامه نویسی است. در این شیوه برنامه نویسی ساختار اصلی روی شئ (object) متمرکز شده به این معنا که سعی شده تمامی توابع و داده های که نیاز است در کنار هم در قالب یک شی آماده باشند. برای اطلاعات بیشتر به این لینک مراجعه کنید.کلاس چیست؟کلاس ها پایه اصلی برنامه نویسی شی گرا است، کلاس ها الگو و نقشه اولیه هستند. ما در کلاس ها ویژگی های یک شی را تعریف میکنیم. مثال بارزی که میتوان زد یک ماشین است که حتما دارای چرخ ، موتور است.برای تعریف کلاس از کلمه کلیدی کلاس استفاده میکنیم.class Car:
     pass
نکته: در نام گذاری کلاس ها از روش Pascal Case استفاده میشود به این معنا که حروف اول کلمات بزرگ نوشته میشوند و کلمات به هم چسیبده است مانند: FirstName - FatherName - UserPicهمانطور که میدانید کلمه کلیدی pass در پایتون به این معناست که پایتون کاری انجام ندهد یعنی کد اجرا میشود ولی هیچ کاری انجام نمیشود. (معمولا زمانی از این دستور استفاده میکنیم که داخل یک تو رفتگی هستیم و میخواهیم بعدا تکمیلش کنیم در حالت عادی با ارور رو به رو میشویم.)در حال حاضر ما کلاس Car را تعریف کردیم اما هیچ آبجکت یا نمونه ای از آن ساخته نشده برای ساختن آبجکت باید همانند کد زیر عمل کنیم.car1 = Car() #object or instanceدر حال حاضر ما یک شئ از کلاس Car ساخته ایم اما عملا این کلاس هیچ کاری نمیکند چون چیزی برایش تعریف نکردیم.متد سازنده یا Constructor Method:تمامی کلاس ها یک متد سازنده دارند. اگر ما این متد را ننویسیم پایتون این متد را به صورت پیشفرض برایمان خواهد ساخت.اما وظیفه متد سازنده چیست؟؟؟وظیفه متد Constructor این است که هنگام ساخته شدن یک object اونو مقدار دهی اولیه (Initialize) کنه.ما تمام مقدایر اولیه رو که نیاز داریم یا اعمال اولیه که میخواهیم روی آن شی پیاده کنیم را با استفاده از این متد پیاده سازی میکنیم.نکته: اگر پارامتر های ورودی متد سازنده را هنگام تعریف کلاس به آن ندهیم با ارور مواجه خواهیم شد.برای تعریف متد سازنده در پایتون باید مانند کد زیر عمل کنیم.class Car:
     def __init__(self,name): # Constructor Method
          self.name = name # attribute
در کد بالا ما متد سازنده کلاس Car را پیاده سازی کردیم و ورودی name را گرفتیم و در نمونه ای ساخته شده ذخیره کردیم.self نیز به عنوان یک ورودی گرفته شده نشان دهنده همان object است که ساخته شده یا عملی قرار است رویش انجام بشود.برای ساخت یک نمونه از این کلاس حال باید مانند کد زیر عمل کنید.car1 = Car(&#039;bmw&#039;)توجه داشته باشید به جای self خود car1 یا ابجکت ساخته شده ارسال میشود و به جای name مقداری که ما به کلاس دادیم یعنی bmw.حال اگر ما بخواهیم به attribute ساخته شده یا همان name برسیم باید با استفاده از یک نقطه &quot;.&quot; این کار را کنیم مثل کد زیر:print(car1.name)خروجی کد زیر bmw خواهد بود.متد ها - Methods:تعریف متد ها دقیقا مانند توابع است اما متد ها داخل یک کلاس هستند.تعریف یک متد در پایتون
class Car:
     def __init__(self,name): 
          self.name = name
     def start(self):
          print(self.name, &#039;started&#039;)توجه کنید به جز موارد خاص در تمامی متد ها ما پارامتر self را باید دریافت کنیم در غیر اینصورت با ارور مواجه خواهیم شد. در متد استارت که تعریف کردیم پیامی حاوی نام ماشین و عبارت started نمایش داده خواهد شد.برای دسترسی به این متد نیز مانند attribute ای که در بالا تعریف کرده بودیم عمل خواهیم کرد...car1 = Car(&#039;bmw&#039;)
car1.start()چند تعریف که بهتر است بدانید:تعریف attribute:  خصوصیت های مربوط به یک کلاس همانند name در مثال بالاobject - instance: به شئ های ساخته شده از یک کلاس گفته میشود.و در آخر لازم به ذکر است که ما میتوانیم بیشتر از یک نمونه از یک کلاس بسازیم برای مثال:car1 = Car(&#039;bmw&#039;) # object or instance
car2 = Car(&#039;benz&#039;)
car3 = Car(&#039;Audi&#039;)
car1.start()
car2.start()
car3.start()</description>
                <category>iammohammadhejazi</category>
                <author>iammohammadhejazi</author>
                <pubDate>Tue, 28 Sep 2021 15:17:15 +0330</pubDate>
            </item>
                    <item>
                <title>شروع کار با فریمورک جنگو (django)</title>
                <link>https://virgool.io/@iammohammadhejazi/%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%81%D8%B1%DB%8C%D9%85%D9%88%D8%B1%DA%A9-%D8%AC%D9%86%DA%AF%D9%88-django-qckyujlcjr8y</link>
                <description>اگه از اینکه جنگو چیست و برای چه کاری از آن استفاده میشود پیشنهاد میکنم که اول مقاله آشنایی سطحی با فریمورک جنگو را مطالعه کنید.همانطور که در مقاله قبل هم اشاره شد جنگو یک فریمورک تحت وب نوشته شده به زبان پایتون است پس قبل از هر چیزی از نصب بودن پایتون روی سیستم خود مطمئن بشید.میتونید با وارد کردن عبارت python در cmd ویندوز و python3 در ترمینال لینوکس مطمئن بشید.برای نصب جنگو کافیه از دستور زیر استفاده کنیم:pip install django در ویندوز
pip3 install django   در لینوکساما قبل اینکه کار دیگه ای بکنیم بهتره با مفهوم virtual environment یا به اصطلاح venv یا همان محیط مجازی آشنا شویم.محیط مجازی یا virtual environment چیست؟virtual environments - محیط مجازیدر طول ساخت، نگهداری و توسعه  گاها به نسخه های متفاوت از یک کتابخانه نیاز داریم (در پروژه های مختلف) برای مثال فکر کنید ما میخواهیم هم در یک پروژه از نسخه 2.2 جنگو و در پروژه ای دیگری از نسخه 3.1 استفاده کنیم. نصب همزمان دو نسخه از یک کتابخونه در site-packages پایتون امکان پذیر نیست.برای حل این مسئله ما از محیط مجازی استفاده میکنیم. محیط های مجازی تمام زیرساخت ها و ابزار های مورد نیاز برای توسعه و نگهداری یک پروژه را جدا از پروژه های دیگر و به صورت ایزوله در اختیار ما قرار میدهد.ساخت محیط مجازی:خیلی راحت با زدن کد زیر میتونید یک محیط مجازی بسازید:python -m venv virtual_environmentsنکته: virtual_environments نام فولدری است که ساخته میشود.حالا نوبت به فعالسازی محیط مجازی میشه که میتونید با زدن کد زیر فعالش کنید.windwos:
virtual_environments\Scripts\activate.bat
Unix or MacOS:
source virtual_environments\Scripts\activateخب حالا باید تمام پکیج های ک میخواهیم رو نصب کنیم که فعلا فقط نیاز به جنگو داریم پس با دستوری که اول همین مقاله گفتیم نصبش میکنیم.تو مقاله بعدی به ساختار جنگو و فایل های که با شروع یک پروژه ساخته میشن میپردازیم.خب اگه تا اینجا رو خوندید و خوشتون اومد پیشنهاد میکنم چنلمون توی تلگرام رو هم دنبال کنید. ???????? ????</description>
                <category>iammohammadhejazi</category>
                <author>iammohammadhejazi</author>
                <pubDate>Tue, 23 Mar 2021 16:53:47 +0430</pubDate>
            </item>
                    <item>
                <title>آشنایی سطحی با فریمورک جنگو</title>
                <link>https://virgool.io/CodeLovers/django-web-framework-boduoxqyjwtb</link>
                <description>جنگوجنگو (Django) یک فریمورک وب متن باز (open source) نوشته شده با زبان پایتون است، اما این به چه معناست؟!فریمورک ها چهارچوب های هستند که در برنامه نویسی و توسعه به ما کمک میکند و پیچیدگی های برنامه را حدالامکان از بین میبرند و همین امر سبب میشود که ما فرصت و سرعت بیشتری برای توسعه نرم افزار خود داشته باشیم.متن باز (open source): متن باز یا اوپن سورس بدین معناست که کاربران به کد های برنامه دسترسی دارند و میتوانند آن را شخصی سازی کنند و یا در توسعه برنامه کمک کنند.فلسفه جنگو (Django):استقلال اجزا نسبت به هم: طراحی این فریمورک به گونه ای بوده که هر جز و عنصر نسبت به جز و عنصر دیگه استقلال نسبی داشته باشد.توسعه سریع (کد زنی کمتر): با جنگو کمتر کد میزنید در نتیجه پروسه توسعه نرم افزار با سرعت بیشتری پیشروی میکند.اصل عدم تکرار یا (Don’t Repeat Yourself | DRY): در برنامه‌نویسی وب، توسط جنگو، توصیه می‌شود که هر کدام از ماژول‌های برنامه، بجای اینکه در بخش‌های مختلف برنامه کاربردی تحت وب تکرار شوند، تنها در یک بخش نوشته شوند.طراحی تمیز: کدهای برنامه‌نویسی جنگو در پایتون بسیار خوانا و تمیز طراحی شده‌اند؛ فلسفه طراحی جنگو،برنامه‌نویسان و توسعه‌دهندگان را تشویق می‌کند تا از قواعد استاندارد توسعه برنامه‌های کاربردی تحت وب تبعیت کنند.10 تا از برترین وب سایت هایی که با Django ساخته شدن:1- Disqus2- Instagram3- Spotify4- YouTube5- Washington Post6- Bitbucket7- Dropbox8- Eventbrite9- Mozilla10- Preziخب اگه تا اینجا رو خوندید و خوشتون اومد پیشنهاد میکنم چنلمون توی تلگرام رو هم دنبال کنید. ????????  ????</description>
                <category>iammohammadhejazi</category>
                <author>iammohammadhejazi</author>
                <pubDate>Sat, 27 Feb 2021 01:48:13 +0330</pubDate>
            </item>
            </channel>
</rss>