atributos de classe de python, instância de atributo, métodos de classe, métodos estáticos

Propriedades de classe

Como o seguinte código:

class Person:
	name = "张三" # 共有类属性
	__age = 18 # 私有类属性

Directamente definido no atributo classe é o atributo classe, que é comum a todas as instâncias de objectos .
Para atributos totais da classe, e podem ser acedidas através da instância de objecto classe do objecto fora da classe .
Por exemplo:

class Person:
	name = "张三" # 共有类属性
	__age = 18 # 私有类属性

p = Person()
print(p.name) # 通过实例对象访问共有属性
print(Person.name) # 通过类对象访问共有属性
"""
输出结果:
张三
张三
"""

atributos de classe privadas não pode ser acessado fora da classe, caso contrário ele irá relatar uma exceção.

Propriedades de instância

  • Ou instância de um objecto por self.xxx .xxx propriedades definidas é nos atributos de instância de classe.
  • Cada instância da instância atual da propriedade do objeto é só lá, se você quiser ter todo o atributo de instância instância de objeto, defina o atributo de instância __init __ inicialização processo.

Exemplos de atributos mostrados no código são definidos como se segue:

class Person:
	def __init__(self):
		self.name = "张三" # 定义实例属性
	

p = Person()
print(p.name)

ou

class Person:
	pass

p = Person()
p.name = "张三" # 定义实例属性
print(p.name)

Ao modificar o valor do atributo classe de objecto classe

Talvez nós vamos pensar para mudar o valor da propriedade através de um objeto instância de classe, então é isto:

class Person:
	sex = "男"
	def __init__(self):
		self.sex = "女"

p = Person()
print(p.sex)
print(Person.sex)
"""
输出结果:
女
男
"""

Você provavelmente pensa:

class Person:
	sex = "男"

p = Person()
p.sex = "女"
print(p.sex)
print(Person.sex)
"""
输出结果:
女
男
"""

Essencialmente, eles são os mesmos, e não modifica o valor do atributo de classe, basta adicionar um e atributos de classe com os mesmos atributos nome da instância na instância atual do objeto, e depois a como referência para o atributo do nome a título de exemplo os atributos objeto de instância irá forçar o escudo fora da classe atributos que fazem referência a propriedade instância, a menos que a instância propriedade para excluir.
Só objeto de classe pode modificar o valor da propriedade de classe

class Person:
	sex = "男"

Person.sex = "女"
print(Person.sex)
"""
输出结果:
女
"""

Métodos de classe

O método tem um objecto de classe é uma necessidade método classe, decorador @classmethod para identificar o tipo de processo para um método de classe, o primeiro parâmetro deve ser um objecto de classe, geralmente cls como o primeiro parâmetro (claro, podem ser utilizados outros nomes variável como seu primeiro argumento, mas a maioria das pessoas são utilizados para as 'cls' como o nome do primeiro argumento, o melhor é usar um 'cls'), capazes de acesso através a instância do objeto e de classe objetos.

class People(object):
    country = 'china'

    #类方法,用classmethod来进行修饰
    @classmethod
    def getCountry(cls):
        return cls.country

p = People()
print(p.getCountry())    #可以用过实例对象引用
print(People.getCountry())    #可以通过类对象引用
"""
输出结果:
china
china
"""

método de classe não é um papel que pode modificar as propriedades de classe:

class People(object):
    country = 'china'

    #类方法,用classmethod来进行修饰
    @classmethod
    def getCountry(cls):
        return cls.country

    @classmethod
    def setCountry(cls,country):
        cls.country = country


p = People()
print(p.getCountry())    #可以用过实例对象引用
print(People.getCountry())    #可以通过类对象引用

p.setCountry('English')   

print(p.getCountry())    
print(People.getCountry())
"""
输出结果:
china
china
English
English
"""

método estático

Se um parâmetro não é passado e o método do atributo exemplo relacionado, então poderia ser definida como métodos estáticos, necessidade de ser modificado por modificação de uma @staticmethod, o método estático não necessita parâmetros de multi-definido.

class People(object):
    country = 'china'

    @staticmethod
    def getCountry():
        return People.country


print (People.getCountry())

resumo

A partir dos métodos de classe e de instância e a definição de métodos estáticos pode ser visto, o primeiro parâmetro é um método de classe classe de objecto cls, deve ser referenciados por propriedades e métodos de uma classe de objecto cls; o primeiro exemplo de um método parâmetro é uma instância de um objecto de auto, seguida por auto referência podem ser atributos de classe, poderia haver um atributo exemplo (isto requer análise específica), mas na presença de classe e instância propriedades do mesmo nome, os atributos de uma instância de maior prioridade. Nenhum parâmetro método estático adicional definidos, propriedades de referência em um método estático, deve ser referenciado pelo objecto de classe.

Publicado 44 artigos originais · ganhou elogios 8 · vista 2471

Acho que você gosta

Origin blog.csdn.net/qq_39659278/article/details/99847339
Recomendado
Clasificación