pitón paquete de 28

Orientado a Objetos - Un paquete

A: un paquete Introducción

Paquete de tres características de características orientadas a objetos del núcleo de un
paquete <-> Integración

En segundo lugar, la operación de envasado atributos Ocultar

1, la forma de ocultar: además __ prefijo antes del nombre del atributo, logrará un atributo oculto de los efectos externos
de los problemas ocultos que requieren atención:

I: En el exterior propiedad no puede acceder directamente al comienzo de la decadencia en la línea doble, pero ya se sabe los nombres de las clases y atributos que puede deletrear el nombre: nombre de la clase _ __ propiedad, entonces usted puede visitar, como Foo._A__N,
por lo que este no hay límite de acceso externo y operar sobre el terreno en el sentido estricto, sólo una deformación del significado gramatical.


class Foo:
    __x = 1  # _Foo__x

    def __f1(self):  # _Foo__f1
        print('from test')


print(Foo.__dict__)
print(Foo._Foo__x)
print(Foo._Foo__f1)

II: Esta oculta dentro del mal externo, ya que las propiedades comenzarán con __ deformación uniforme se produce cuando el tipo de cuerpo de comprobar la sintaxis del código


class Foo:
    __x = 1  # _Foo__x = 1

    def __f1(self):  # _Foo__f1
        print('from test')

    def f2(self):
        print(self.__x) # print(self._Foo__x)
        print(self.__f1) # print(self._Foo__f1)

print(Foo.__x)
print(Foo.__f1)
obj=Foo()
obj.f2()

III: Esta operación de deformación sólo se produce cuando la gramática comprobación de un miembro de la clase, __ después del comienzo de las definiciones de atributos no se deforman


class Foo:
    __x = 1  # _Foo__x = 1

    def __f1(self):  # _Foo__f1
        print('from test')

    def f2(self):
        print(self.__x) # print(self._Foo__x)
        print(self.__f1) # print(self._Foo__f1)

Foo.__y=3
print(Foo.__dict__)
print(Foo.__y)

class Foo:
    __x = 1  # _Foo__x = 1

    def __init__(self,name,age):
        self.__name=name
        self.__age=age

obj=Foo('egon',18)
print(obj.__dict__)
print(obj.name,obj.age)

2, ¿por qué ocultar?
I, oculto atributo de datos "ocultos clase de datos de límites de operación externa directa sobre los datos, entonces la interfaz debe proporcionar clase permitida datos de operación fuera indirectamente,
en la interfaz puede lógica adicionalmente adicional a los datos operando estrictamente controlada:
diseñador:


class People:
    def __init__(self, name):
        self.__name = name

    def get_name(self):
        # 通过该接口就可以间接地访问到名字属性
        # print('不让看')
        print(self.__name)

    def set_name(self,val):
        if type(val) is not str:
            print('必须传字符串类型')
            return
        self.__name=val

Usuario:
obj = People ( 'Egon')
Imprimir (obj.name) Propiedad # Nombre no pueden ser directamente
obj.set_name ( 'EGON')
obj.set_name (123123123)
obj.get_name ()
II, la función de ocultar / atributos de los métodos: propósito es aislar la complejidad

Supongo que te gusta

Origin www.cnblogs.com/Franciszw/p/12664123.html
Recomendado
Clasificación