Albatta klass yoki klass ekzemplyarining (bundan keyin atribut) metodi qanday bo‘lishini – om-maviy yoki noommaviy – hal qilib oling. Agar shubhalanayotgan bo‘lsangiz, noommaviy atributni tanlang. Keyinchalik uni ommaviy qilish teskarisini qilishdan osonroq kechadi.
Ommaviy atributlar – boshqa dasturchilar ham foydalanishlari mumkin bo‘lgan
atributlar, siz esa teskari nomutanosiblikning bo‘lmasligiga ishonch hosil qilishingiz kerak. Noommaviy atributlar esa, o‘z
navbatida, 3-shaxslar tomonidan qo‘lanilishga mo‘ljallanmagan, shuning uchun siz ularni o‘zgartirmasligingiz yoki o‘chirmasligingizga kafolat bera olmaysiz.
Biz “yashirin atribut” atamasini qo‘llamaymiz, chunki Pythonda bunaqasi bo‘lmaydi.
Klasslar atributlarining yana bir tipi API klass ostilariga tegishli bo‘lib, ko‘pincha ularni boshqa tillarda protected deb ham nomlashadi.
Ba’zi klasslar shunday loyihalashtiriladiki, ulardan bazaviy klass imkoniyatlarini kengaytiradi-gan yoki yangilaydigan boshqa klasslar vorisligi mumkin bo‘ladi. Siz mana shunday klassni loy-ihalashtirayotganingizda o‘zingiz
uchun qaysi atributlar ommaviy, qaysilari API klass ostiga te-gishli va qaysilari faqat bazaviy klass tomonidan qo‘llanilishini belgilab oling va aniq ko‘rsating.
Endi tavsiyalarni shakllantirib olamiz:
Ochiq atributlar nomining boshlanishida tagchiziqqa ega bo‘lmasliklari kerak;
Agar ochiq atribut nomi tilning kalit so‘zi bilan bir xillikka ega bo‘lsa, nomning oxirida bitta tagchiziq qo‘shing. Bu nomni o‘zgartirish yoki abbreviaturalardan foydalanishdan ko‘ra ma’qulroq (lekin bu qoidaning istisno holatlari ham mavjud – klassni anglatadigan argu-ment, ayniqsa, klass metodining birinchi argumenti (class method) cls nomiga ega bo‘lishi lozim);
Oddiy ommaviy atributlarni tushunarli nomlar bilan nomlang va murojat qilish va o‘zgarti-rishning murakkab metodlarini yozmang. (accessor/mutator, get/set). Yodingizda bo‘lsin, Pythonda ularni, kerak bo‘lsa, keyinchalik qo‘shish juda oson. Bunday holda atributga muro-jaat sintaksisining ortida funksional amallarni yashirish uchun xususiyatlar (properties)ni qo‘llang.
1-qo‘shimcha: xususiyatlar (properties) faqat yangi uslubdagi klasslar uchun ishlaydi (py-thon 3 da barcha klasslar shnday klasslardir).
2-qo‘shimcha: amaliy funksionallik bilan bog‘liq chetki kutilmagan holatlardan qutulishga harakat qiling;
umuman olgand,a keshlash kabi ba’zi holatlarning zarari yo‘q.
3-qo‘shimcha: hisoblash ishlariga ko‘p vaqt sarflaydigan amallardan imkon qadar ozroq foydalaning, chunki atributlar yordamida yozilayotganligi sababli murojaat (nisbatan) tez bajarilayotgandek tassurot qoldirishi mumkin.
Agar siz klassingizni boshqa klasslar meros qilib olmasligini, lekin klass ostilar ba’zi atributlarga vorislik qilishlarini istab loyihalashtirayotgan bo‘lsangiz, nomlarning boshla-nishida ikkita tagchiziq qo‘shing va oxirida birorta ham tagchiziq qo‘ymang. Pythondagi nomlarni o‘zgartirish mexanizmi shunday ishlaydiki, klass nomi xuddi shunday atribut nomiga qo‘shiladi, bu esa klass ostilarning atributlari bilan bir xil nom bo‘lishining oldini olishga asos bo‘ladi.
1-qo‘shimcha: e’tiborli bo‘ling, agar klass osti xuddi shunday nom va atribut nomiga ega
3-qo‘shimcha: ushbu mexanizm hammaga ham yoqavermaydi, shuning uchun nomlar bir xilligidan qutulish va bu atributlarga murojaat qilish imkoniyatiga ega bo‘lish orasida kom-promissga erishishga harakat qiling.