Las propiedades de clase y de instancia
- Las propiedades de clase : en Python que se pueden atribuir las clases de acceso directo se puede dividir en pública y privada de clase Atributos Los atributos de clase (como variables miembro estático en Java), acceso directo a la propiedad pública y la propiedad privada tendrán que pasar de métodos get y set de acceso definida (objeto para llamar a los métodos get y set).
- Ejemplos de atributos : instancia de un objeto (el objeto creado por la clase) Propiedad propiedad no se puede acceder directamente a través del nombre de la clase. Los objetos pueden ser añadidos directamente a las propiedades externos (no se recomienda, debido a las propiedades del objeto deben ser encapsulados dentro de la clase, o es propenso a un número de error implícito), esta propiedad también se conoce como propiedades de la instancia. En general, los atributos de instancia inicializa del método se
__init()
definen internamente por los parámetros pasados y asignar (método de construcción similar en Java). - Debe tenerse en cuenta que las propiedades de la clase de acceso a objetos no afectarán el atributo de clase original, ya que cuando se crea una instancia de un objeto, la asignación de memoria dará un objeto espacial, por lo que las propiedades de esta clase es la clase de objeto para acceder a las propiedades mismas de este espacio (equivalente a una copia), de modo de cambiar el atributo de clase directamente a través del objeto no puede tener un impacto en la clase original.
class people:
name = "tom" # 类属性
__height = 180
def __init__(self, age):
self.age = age # 实例属性
def getHeight(self):
return self.__height
def setHeight(self,height):
self.__height = height
print("通过类名访问:" + people.name)
p = people(20)
p.name="max"
p.setHeight(190)
print("通过对象访问:%s %d %d"%(p.name,p.age,p.getHeight()))
print("通过类名访问:" + people.name) #p.name="max"并没有影响到原类属性
resultados:
Los métodos de clase, métodos estáticos y método de instancia
- Los métodos de clase : Clase Método objeto de propiedad, decorador necesidad
@classmethod
identificada, el primer parámetro debe ser un objeto de clase, en general,cal
como el primer parámetro (por supuesto no se puede llamarcal
, es sólo un hábito y norma), acceder a través del objeto de instancia y el objeto (el nombre de la clase). método de clase permite que una instancia de objeto para modificar el valor del atributo de clase (ya mencionado anteriormente, una instancia de objeto del valor del atributo de clase no puede ser modificado directamente)
class people:
name = "tom" # 类属性
def __init__(self, age):
self.age = age # 实例属性
@classmethod
def setName(cls,name):
cls.name=name
p=people(20)
p.setName("max")
print(people.name)
resultados:
- Ejemplos de métodos de : instancia de método de un objeto de propiedad, no pueden acceder a la clase de objeto (no directamente por el nombre de la clase que llama). El primer argumento debe ser una instancia de un objeto, en general,
self
como el primer parámetro (la misma razón, no se puede llamarself
, es sólo un hábito y la norma), sujeto a la llamada con el ejemplo.
class people:
name = "tom" # 类属性
def __init__(self, age):
self.age = age # 实例属性
def showAge(self):
print("年龄:%d"%(self.age))
p=people(20)
p.showAge()
resultados:
- Método estático : necesidad decorador
@staticmethod
, hay necesidad de definir el parámetro a ser utilizados como una función normal.
class people:
name = "tom" # 类属性
def __init__(self, age):
self.age = age # 实例属性
@staticmethod
def showAge():
print("姓名:"+people.name)
people.showAge()
p=people(20)
p.showAge()
resultados: