فرح احمد نشر 23 مايو 2021 أرسل تقرير نشر 23 مايو 2021 (معدل) أو ممكن بمثال زي هيك new-person() وظيفتها قراءة جميع attributes person في حال per_name='' اما ان كان per_name !='' لا يتم ادخال الاسم ويتم ادخال باقي البيانات في الحالتين أو باستخدام الدالة show() وظيفتها طباعة جميع attributes person على الشاشة تم التعديل في 23 مايو 2021 بواسطة Wael Aljamal توضيح السؤال اقتباس
0 Adnane Kadri نشر 23 مايو 2021 أرسل تقرير نشر 23 مايو 2021 هل يمكنك ذكر اللغة او إطار العمل المراد بها إنشاء الدالة ؟ اقتباس
0 Wael Aljamal نشر 23 مايو 2021 أرسل تقرير نشر 23 مايو 2021 الجزء الأول من الحل، كيفية الوصول لخصائص غرض في بايثون: في بايثون، يوجد خصائص افتراضية للأغراض من أصل اللغة و خصائص يقوم المستخدم (مستخدم اللغة - المبرمج) بتعريفها. يمكن الوصول لخصائص غرض بالدالة التالية: dir(obj) والتي ستعيد جميع الخصائص: ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'bar', 'foo', 'func'] يمكنك الملاحظة أن الخصائص الافتراضية attributes تبدأ و تنتهي ب __ لذلك يمكننا فصلهم بسهولة عن طريقا الاسم: >>> [a for a in dir(obj) if not a.startswith('__')] ['bar', 'foo', 'func'] سنعيد قائمة بأسماء الخواص التي عرفها المستخدم (لن يكتب المستخدم خاصية تبدأ ب __ ). لإعادة الخاصيات بدون الدوال نستعمل: >>> [a for a in dir(obj) if not a.startswith('__') and not callable(getattr(obj, a))] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ الجزء الثاني ويحوي المثال: ليكن لدينا شيفرة التلميذ التالية: class Student: id = 1 f_name = '' l_name = 'aljamal' age = 18 def get_attr(self): return [a for a in dir(self) if not a.startswith('__') and not callable(getattr(self, a))] def print_attr(self): print(self.get_attr()) def print_attr_with_value(self): for attr in self.get_attr(): print("attr: " + attr + "\t value: " + str(getattr(self, attr))) def new_person(self): for attr in self.get_attr(): value = getattr(self, attr) if isinstance(value, str) and value == '': print("attrbut is missed, please Enter: " + attr) #self[attr] = input() setattr(self, attr, input()) else: print(attr + "\t is: " + str(getattr(self, attr))) s1 = Student() s1.print_attr() s1.new_person() s1.print_attr_with_value() قمت بتعريف صنف طالب student وفيه الدوال التالية: get_attr تعيد قائمة بالخصائص print_attr تطبع الخصائص print_attr_with_value تطبع الخصاصية مع القيمة new_person تسمح للمستخدم بإدخال قيمة خاصية نصية فارغة بعض الدوال المساعدة المستخدمة: getattr تقرأ قيمة الخاصية للغرض setattr تقوم بإسناد قيمة للخاصية isinstance للتأكد من نمط خاصية ما للغرض هذا هو حل السؤال كما فهمته أنا وأرجو أن يكون كما تريدين، في حال وجود أسئلة عن الشيفرة يمكنك طرح أسئلة إضافية، أرجو قرائتها بتمعن. اقتباس
السؤال
فرح احمد
أو ممكن بمثال زي هيك
تم التعديل في بواسطة Wael Aljamalnew-person() وظيفتها قراءة جميع attributes person في حال per_name='' اما ان كان per_name !='' لا يتم ادخال الاسم ويتم ادخال باقي البيانات في الحالتين
أو باستخدام الدالة
show() وظيفتها طباعة جميع attributes person على الشاشة
توضيح السؤال
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.