سرمایه گذاری متفاوت در سال نو 🍎🌱 ۳۵٪ تخفیف نوروزی ➕ حضور رایگان در مسترمایند نخبگان صنعت نرم‌افزار 💻✅
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ علیرضا قرقابی
درمورد pymongo
جامعه پایتون (وب) ایجاد شده در ۲۸ آذر ۱۴۰۰

من میخوام بدونم در این کد

def store(self, data, collection, *args):
        collection = getattr(self.mongo.database, collection)
        if isinstance(data, list) and len(data) > 1:
            collection.insert_many(data)
        else:
            collection.insert_one(data)

مگر در self.mongo.database ویژگی به نام colllection وجود دارد؟چیجوری میتونیم بفهمیم؟و چرا دوباره جواب در collecvtion ریخته شده یعنی اسم اینجا دل به خواهی نوشته شده collection که در خودش ریخته؟ممنون میشم کامل توضیح بدید

سلام وقت بخیر علیرضا جان

خیلی بهتر بود و ممنون میشدم در ادامه همون تاپیک ادامه سوالتون رو میپرسیدید تا اگر فردا روز دوستان دیگه به مشکل شما برخورد کردند مشکلشون همونجا رفع بشه

همونطور که در تاپیک قبل گفته شد متد getattr() وظیفه دریافت مقدار ویژگی از آبجکت مد نظر رو دارد در واقع در اون خط اینطور کار میکنه که مقدار collection رو از ابجکت self.mongo.database در collection میریزد

درواقغ collection نام یه variable هست که در فایل database موجود در پکیج pymongo قرار دارد که مقدار درونشو داخل متغیر collection(که این نام رو خودمون انتخاب کردیم) ریختیم .

s = getattr(self.mongo.database, collection)

برای ساده‌تر بگم ما در این خط از کد اومدیم مقدار collection که در self.mongo,database که خود از کلاس MongoDatabase هست گرفتیم و در متغیر s ریختیم .

اگر میخواهید بدونید self.mongo از کجا اومده میتونید فایل storage.py رو ببینید :

از اینجا هم میتونید داکیومنتیشن مربوطه رو مطالعه کنید لینک و یا روی کلاس MongoDatabse کلید ctrl و راست کلیک رو بزنید و سورس مربوطه رو ببینید

class MongoStorage(StorageBase):
	    def __init__(self):
	        self.mongo = MongoDatabase() 
بهترین پاسخ
پوریا شفیعی ۲۸ آذر ۱۴۰۰، ۱۴:۲۵