الأساسية

  • تحسين استخدام فئات Python: فهم الأمور الأساسية وتجنب اللبس

    في البداية، يبدو أن هناك سوء فهم في كيفية استخدام الدوال في الفئة التي قمت بتعريفها. في الوقت الحالي، يوجد خطأ في كيفية تعريف دالة CalcDates واستخدامها.

    لفهم هذا السؤال بشكل أفضل، دعوني أشرح لك كيف يعمل الكود حاليًا:

    تعريفك الحالي للدالة CalcDates هو:

    python
    def CalcDates(self, Days1): # Determine dates # ... (الكود الباقي)

    هذه الدالة تتوقع متغيرًا يسمى Days1 كواحد من الوسائط. عند استدعاءها هكذا:

    python
    D1= Curl.CalcDates(90)

    أنت ببساطة تقوم بتمرير قيمة 90 إلى المتغير Days1. ولكن المشكلة هي أنك تستخدم self.Days1 في داخل الدالة دون أن تمرره كوسيلة طريقة للفئة.

    لحل هذه المشكلة، يمكنك تعديل تعريف الدالة لتأخذ self أيضًا كوسيلة طريقة، مما يتيح لها الوصول إلى متغيرات الفئة. يمكنك فعل ذلك على النحو التالي:

    python
    def CalcDates(self, Days1=None): # Determine dates if Days1 is None: Days1 = self.Days1 # ... (الكود الباقي)

    بهذا التعديل، إذا لم يتم تمرير قيمة لـ Days1 عند استدعاء الدالة، ستتم استخدام قيمة self.Days1 التي قمت بتعريفها في __init__ كقيمة افتراضية.

    الآن يمكنك استدعاء الدالة بشكل مباشر كما تريد:

    python
    D1 = Curl.CalcDates(90)

    أو يمكنك استدعاءها دون تحديد قيمة لـ Days1 وستستخدم القيمة الافتراضية:

    python
    D1 = Curl.CalcDates()

    هذا يجعل الفئة أكثر مرونة في استخدامها مع توفير القيم الافتراضية عند الضرورة.

    المزيد من المعلومات

    في هذا السياق، يجب أن نلقي نظرة على كيفية تصميم الكود والفهم الصحيح لتبادل البيانات بين الدوال داخل الفئة. يبدو أن هناك بعض اللبس في الاستخدام الصحيح للمتغيرات والدوال.

    أولًا، دعوني أوضح بعض النقاط:

    1. في تعريف الدالة __init__:
    python
    def __init__(self): self.file7 = file7 self.Days1 = Days1

    لديك الآن self.Days1 كمتغير داخلي في الفئة. ومع ذلك، لاحظ أنه يجب عليك تمرير file7 و Days1 كوسائط إلى الدالة __init__. لذلك، يمكن تحديثها كما يلي:

    python
    def __init__(self, file7, Days1): self.file7 = file7 self.Days1 = Days1
    1. بالنسبة للدالة readfile، يمكنك تحسينها لتجعل استخدام file7 المتاح كمتغير داخلي، لذلك لا داعي لتمريرها كوسيطة:
    python
    def readfile(self): ticknum = 0 read_ticker = [] with open(self.file7, "r") as ins: for line in ins: if line.endswith('\n'): line = line[:-1] read_ticker.append(line) ticknum += 1 return read_ticker
    1. في دالة CalcDates، يبدو أن هناك خلط بين Days1 كوسيط و self.Days1 كمتغير داخلي. يمكنك تحديثها لتفادي هذا اللبس:
    python
    def CalcDates(self, Days1=None): # Determine dates if Days1 is None: Days1 = self.Days1 # ... (الكود الباقي)

    بتحديث هذه النقاط، يمكنك الآن استخدام الفئة بشكل أكثر وضوحًا وتبادل البيانات بشكل صحيح بين الدوال. يُفضل أيضًا استخدام بنية السياق (with) عند فتح الملفات للتأكد من إغلاقها بشكل صحيح حتى في حالة حدوث استثناء.

  • ما هي خدمات النظام الأساسية (Core Infrastructure) المتاحة في مايكروسوفت أزور؟

    ما هي خدمات النظام الأساسية (Core Infrastructure) المتاحة في مايكروسوفت أزور؟

    1. Windows Server
    2. Microsoft Azure
    3. Active Directory
    4. System Center
    5. SQL Server
    6. Microsoft Exchange Server
    7. SharePoint
    8. Dynamics 365
    9. Microsoft Intune
    10. Microsoft Remote Desktop Services
    11. Hyper-V
    12. Microsoft Teams
    13. Visual Studio
    14. Microsoft Security Essentials
    15. Windows Defender Advanced Threat Protection

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر