Sari la conținut
Odoo Meniu
  • Autentificare
  • Try it free
  • Aplicații
    Finanțe
    • Contabilitate
    • Facturare
    • Cheltuieli
    • Spreadsheet (BI)
    • Documente
    • Semn
    Vânzări
    • CRM
    • Vânzări
    • POS Shop
    • POS Restaurant
    • Abonamente
    • Închiriere
    Site-uri web
    • Constructor de site-uri
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Lanț Aprovizionare
    • Inventar
    • Producție
    • PLM
    • Achiziție
    • Maintenance
    • Calitate
    Resurse Umane
    • Angajați
    • Recrutare
    • Time Off
    • Evaluări
    • Referințe
    • Flotă
    Marketing
    • Social Marketing
    • Marketing prin email
    • SMS Marketing
    • Evenimente
    • Automatizare marketing
    • Sondaje
    Servicii
    • Proiect
    • Foi de pontaj
    • Servicii de teren
    • Centru de asistență
    • Planificare
    • Programări
    Productivitate
    • Discuss
    • Artificial Intelligence
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Aplicații Terțe Odoo Studio Platforma Odoo Cloud
  • Industrii
    Retail
    • Book Store
    • Magazin de îmbrăcăminte
    • Magazin de Mobilă
    • Magazin alimentar
    • Magazin de materiale de construcții
    • Magazin de jucării
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Distribuitor de băuturi
    • Hotel
    Proprietate imobiliara
    • Real Estate Agency
    • Firmă de Arhitectură
    • Construcție
    • Property Management
    • Grădinărit
    • Asociația Proprietarilor de Proprietăți
    Consultanta
    • Firma de Contabilitate
    • Partener Odoo
    • Agenție de marketing
    • Law firm
    • Atragere de talente
    • Audit & Certification
    Producție
    • Textil
    • Metal
    • Mobilier
    • Mâncare
    • Brewery
    • Cadouri corporate
    Health & Fitness
    • Club Sportiv
    • Magazin de ochelari
    • Centru de Fitness
    • Wellness Practitioners
    • Farmacie
    • Salon de coafură
    Trades
    • Handyman
    • IT Hardware and Support
    • Asigurare socială de stat
    • Cizmar
    • Servicii de curățenie
    • HVAC Services
    Altele
    • Organizație nonprofit
    • Agenție de Mediu
    • Închiriere panouri publicitare
    • Fotografie
    • Închiriere biciclete
    • Asigurare socială
    Browse all Industries
  • Comunitate
    Învăță
    • Tutorials
    • Documentație
    • Certificări
    • Instruire
    • Blog
    • Podcast
    Empower Education
    • Program Educațional
    • Scale Up! Business Game
    • Visit Odoo
    Obține Software-ul
    • Descărcare
    • Compară Edițiile
    • Lansări
    Colaborați
    • Github
    • Forum
    • Evenimente
    • Translations
    • Devino Partener
    • Services for Partners
    • Înregistrează-ți Firma de Contabilitate
    Obține Servicii
    • Găsește un Partener
    • Găsiți un contabil
    • Meet an advisor
    • Servicii de Implementare
    • Referințe ale clienților
    • Suport
    • Actualizări
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Obține un demo
  • Prețuri
  • Ajutor
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Toate postările Oameni Insigne
Etichete (Vezi tot)
odoo accounting v14 pos v15
Despre acest forum
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Toate postările Oameni Insigne
Etichete (Vezi tot)
odoo accounting v14 pos v15
Despre acest forum
Suport

How to do Encapsulation in Python?

Abonare

Primiți o notificare când există activitate la acestă postare

Această întrebare a fost marcată
python
1 Răspunde
2457 Vizualizări
Imagine profil
Soham Mukherjee

I am stuck here, can anybody tell what 's wrong with my code ?  


[code]
self.a = 1

self.b = 2

self.c = 3

pass



def __getattribute__(self, name):

if sys._getframe(1).f_code.co_argcount == 0:

if name in self.privates:

raise Exception(" Access to private attribute \"%s\" is not allowed" % name)

else:

return object.__getattribute__(self, name)

else:

return object.__getattribute__(self, name)



def __setattr__(self, name, value):

if sys._getframe(1).f_code.co_argcount == 0:

if name in self.privates:

raise Exception("Setting private attribute \"%s\" is not allowed"

elif name in self.protected:

raise Exception("Setting protected attribute \"%s\" is not allowed" % name)

else:

return object.__setattr__ (self, name, value)

else:

return object.__setattr__(self, name , value)





example = EncapsulationClass()



example.a = 10 # Exception: Setting private attribute "a" is not allowed

example.b = 10 # Exception: Setting protected attribute "b" is not allowed

example.c = 10 # example.c == 10



example.__dict__["privates"] # Exception: Setting protected attribute "b" is not allowed
[/code]


Is there any better way to achieve encapsulation in Python?


0
Imagine profil
Abandonează
Imagine profil
Lars Liedtke
Cel mai bun răspuns

You can use "_" and "__" before attribute-names and method-names as visibility qualifiers in Python. 

E.g.:

class Example:
    
    def __init__(self):
        self._protected = "This is protected"
        self.__private = "This is private"

NOTE: While you can use this, there is no hard enforcing of those. They still can be accessed with some tricks. But at least they are not easily accessible via the dot-notation from outside. And this is considered as not "pythonic" by some. But I use it without having problems and being aware that problems could arise with so called "name-mangling", this is one of the reasons to test my code extensively.

0
Imagine profil
Abandonează
Îți place discuția? Nu doar citi, alătură-te!

Creează-ți un cont astăzi pentru a beneficia de funcții exclusive și a interacționa cu minunata noastră comunitate!

Înscrie-te
Postări similare Răspunsuri Vizualizări Activitate
Display BOM version in Purchase order(for subcontracting) or in LOT/SN page
python
Imagine profil
0
mar. 26
10
new python env
python
Imagine profil
0
mar. 25
3729
What means "Too many values to unpack" message? Rezolvat
python
Imagine profil
Imagine profil
Imagine profil
Imagine profil
Imagine profil
4
apr. 24
177701
have no data in screen. read data in my own module from different model
python
Imagine profil
0
dec. 23
3914
How to insert value to a one2many field in table with create method? Rezolvat
python
Imagine profil
Imagine profil
Imagine profil
Imagine profil
Imagine profil
5
iul. 25
235579
Comunitate
  • Tutorials
  • Documentație
  • Forum
Open Source
  • Descărcare
  • Github
  • Runbot
  • Translations
Servicii
  • Hosting Odoo.sh
  • Suport
  • Actualizare
  • Custom Developments
  • Educație
  • Găsiți un contabil
  • Găsește un Partener
  • Devino Partener
Despre Noi
  • Compania noastră
  • Active de marcă
  • Contactați-ne
  • Locuri de muncă
  • Evenimente
  • Podcast
  • Blog
  • Clienți
  • Aspecte juridice • Confidențialitate
  • Securitate
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk Slovenščina Español (América Latina) Español Svenska ภาษาไทย Türkçe українська Tiếng Việt

Odoo este o suită de aplicații de afaceri open source care acoperă toate nevoile companiei dvs.: CRM, comerț electronic, contabilitate, inventar, punct de vânzare, management de proiect etc.

Propunerea de valoare unică a Odoo este să fie în același timp foarte ușor de utilizat și complet integrat.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now