Python tidak melarang memanggil metode pribadi / terlindungi karena ia mencintaimu :-)

Banyak salinan rusak dalam diskusi tentang mengapa python adalah jenis byaka - tidak melarang memanggil metode non-publik. Dan tentu saja, penjelasan dalam semangat "kita semua adalah orang dewasa di sini" terdengar lebih dari sekali, tetapi tampaknya mereka tidak cukup, saya pikir saya akhirnya mengerti bagaimana menjelaskan ini dengan lebih jelas, saya berharap ini benar.

Biarkan saya mengingatkan Anda bahwa untuk metode pribadi, python hanya secara dinamis mengubah nama dan tidak membatasi akses ke sana dengan cara apa pun, tetapi untuk yang terlindungi tidak melakukan ini, itu hanya konvensi penamaan untuk metode, bagi mereka yang tidak benar-benar tahu, ada bahan tambahan di sini dan di sini .

Pertama, Anda harus mulai dengan pertanyaan, mengapa bahasa melarang memanggil beberapa kode? Banyak bahasa melakukan ini, tetapi tidak mengikuti dari sini bahwa itu benar dan seharusnya begitu.

!= .

Apa saja opsi yang memungkinkan?

  1. Anda adalah pembuat kode, untuk beberapa alasan Anda memutuskan bahwa metode ini tidak diperlukan dalam domain publik, ok, hak Anda untuk berpikir demikian, tetapi mengapa harus dilarang secara teknis? Apakah kode ini memanggil daemon dan perlu disembunyikan? Atau apakah itu kode biasa dan programmer lain seperti Anda mungkin berada dalam situasi yang bahkan tidak dapat Anda pikirkan dan di mana ia perlu menggunakan kode ini. Atau apakah Anda berpikir bahwa Anda adalah seorang superman dan Anda benar-benar tahu bahwa ini tidak mungkin?
  2. Anda adalah pengguna kode orang lain - biasanya Anda tidak tahu apa-apa tentang keberadaan metode non-publik kecuali jika Anda melakukan upaya khusus (metode yang dilindungi dapat didokumentasikan, tetapi dengan indikasi apa adanya). Nah, katakanlah Anda dengan sadar dan sengaja belajar tentang keberadaan beberapa metode non-publik dan menyebutnya, apa yang terjadi? Apakah bumi terbuka dan Setan serta Saddam melompat keluar? Atau apakah itu bekerja seperti yang diharapkan? Saya mendengar seseorang berteriak - mungkin pecah saat upgrade, tentu saja, tetapi karena Anda sengaja menggunakan metode non-publik, maka Anda memahami risiko ini (jika tidak, maka Anda tidak pada tempatnya). Selain itu, memperbarui bukanlah proses spontan, seperti pembusukan inti atom uranium, segala sesuatu di lingkungan pengujian akan rusak. Tentu saja, itu terjadi untuk beberapa pembaruan yang bersifat kuantum dan terjadi pada saat-saat yang paling tidak terduga di tempat-tempat yang paling tidak terduga, tetapi kemudian konyol untuk berbicara tentang beberapa metode pribadi di sana, akan ada banyak masalah tanpa itu.

Bahkan, di balik semua argumen ini ada yang penting, bisa dikatakan filosofis, prinsip: "Mesin itu bodoh, orang itu pintar." Yaitu bukan mesin yang harus membuat keputusan tentang apa yang mungkin dan apa yang tidak, keputusan harus dibuat oleh seseorang.

Anda dapat melawan ini dengan mengatakan bahwa pembuat kode (seseorang atau seseorang yang rasional) memutuskan bahwa itu tidak mungkin, tetapi kemudian prinsip lain ikut bermain, prinsip kebebasan dan tanggung jawab: "Jika Anda telah berbagi sesuatu dengan orang lain, jangan mendikte bagaimana mereka kita harus menggunakannya, mereka sendiri yang bertanggung jawab atas tindakan mereka ”, di sini kita sampai pada kesimpulan bahwa kita semua adalah orang dewasa di sini dan bertanggung jawab atas tindakan kita.

Seseorang akan mengatakan bahwa mengetik adalah pembatasan yang sama - benar, tetapi ini hanya kasus ketika sebuah mesin memberitahu seseorang, oh saya bodoh, saya tidak tahu apa yang harus dilakukan - siapa dan tipe apa yang harus dituju, jelaskan.

Ngomong-ngomong, ada contoh yang bagus dari kasus ketika penulis memutuskan bahwa mereka dapat membuat mobil pintar, tetapi mereka tidak berhasil - ini adalah format YAML, penulis menulis spesifikasi besar yang tampaknya dapat diterapkan oleh beberapa orang atau tidak cukup jelas , tetapi ada masalah mendasar yang tidak terkait dengan implementasi ketika upaya untuk menebak jenis sabun (berpura-pura bahwa mesin itu pintar) menyebabkan kegagalan.

Di dunia python ada seorang pria yang memahami ini (dan dijelaskan secara rinci). Perpustakaannya sepertinya pendekatan yang tepat - datanya dapat dibaca oleh manusia, tetapi untuk datanya ada skema terpisah yang ditulis manusia yang memungkinkan mesin tidak berpura-pura pintar, tetapi untuk mengetahui di mana jenisnya, tetapi sayangnya pendekatan ini belum menjadi arus utama.

Semoga saya berhasil meningkatkan penjelasan filosofi python dan mengolok-olok pendekatan lain)

Source: https://habr.com/ru/post/id457034/


All Articles