aprendizagem python orientada a objetos fundação 27--

O conceito de um objeto

 

"Orientado a objetos" é o núcleo do "objeto" da palavra, mas a essência do objeto é a "integração", o que isso significa?

 

Todos os programas são dos "dados" e componente "funcional", e, portanto, a natureza da programação é definir uma série de dados e, em seguida, definir uma série de funções para operar sobre os dados. Antes de aprender "objeto" no programa e os dados são separados, como se segue

# 数据:name、age、sex
name='lili'
age=18 sex='female' # 功能:tell_info def tell_info(name,age,sex): print('<%s:%s:%s>' %(name,age,sex)) # 此时若想执行查看个人信息的功能,需要同时拿来两样东西,一类是功能tell_info,另外一类则是多个数据name、age、sex,然后才能执行,非常麻烦 tell_info(name,age,sex)

Depois de aprender o "objeto", temos um recipiente que pode florescer e dados capacidades, para que possamos dizer: O objetivo é integrar os dados e funcionalidade do produto em conjunto, ou "objeto" é uma flor e contentor de dados função / / caixa de caixas.

Se os "dados" em relação a "máscara", "sombra", "Gloss" e outras matérias-primas necessárias para a composição; a "função" como uma metáfora para o delineador ferramenta, lápis sobrancelha composição e outras necessidades, em seguida, a "objecto" é um paleta, caixa de make-up pode ser "materiais" e "ferramentas" estão instalados em conjunto

 

Se tomarmos a "maquiagem", como uma metáfora para a lógica de negócios a ser executado neste momento só pode trazer uma coisa, e que é a caixa de maquiagem, porque a caixa de maquiagem incorpora todas as funções necessárias matérias-primas e maquiagem, que foram comparados com você trazer matérias-primas e funções a desempenhar, para ser mais conveniente.

 

Depois de aprender os conceitos básicos de objetos, programação orientada a objetos para compreender a forma como um monte de programação relativamente simples, orientada a objeto é a criação de um número de objetos, a integração da expansão original de dados e funções relevantes em um objeto em , não só é fácil de usar, a solução também pode aumentar o grau de processos de acoplamento, aumentando assim a escalabilidade do programa (precisa ser enfatizado que a propriedade contém muitos aspectos de qualidade de software, extensões orientadas a objeto para resolver o problema apenas)

 

objeto de segunda classe

Que categoria de classe / categoria, é a base de uma análise e concepção orientada para o objecto, se uma pluralidade de objectos de dados com função semelhante, em seguida, a pluralidade de objectos de pertencer à mesma espécie. Com o tipo de benefícios: podemos colocar a mesma função com o mesmo tipo de dados objeto armazenado na classe, cada objeto sem ter que repetir um depósito, para apenas manter cada objeto em seu próprio conjunto único de dados pode ser, uma economia significativa no espaço. Assim, se o objecto é uma função do recipiente utilizado para armazenar dados, em seguida, a categoria é usada para armazenar os mesmos dados uma pluralidade de contentor de objectos função.

Em resumo, apesar de estarmos introduzido pela primeira vez depois das apresentações da classe, mas precisa ser enfatizado: No programa, a classe deve ser definida com antecedência, em seguida, chamar a classe para produzir um objeto (chamar a classe para obter o valor de retorno é o objeto). Existe uma correlação entre as classes e objectos produzidos objectos, este meio de associação: um objecto pode ter acesso aos dados e às funções comuns para a classe, de modo que o conteúdo ainda pertence à classe de objecto, a classe é simplesmente uma economia de espaço, reduzir mecanismo de redundância de código para a extremidade do núcleo da programação orientada para o objecto ainda consiste em utilizar o objeto.

Depois de entender essas duas classes fundamentais e conceito objetos, já que podemos introduzir programação orientada a objetos lo.

 

Programação orientada a objetos de três

definição 3.1 classe da instância de

Nós desenvolvemos um sistema de Universidade Tsinghua eletiva, por exemplo, simplesmente descreve como escrever programas baseados no pensamento orientado a objeto

 

idéia básica orientada a objeto é usar o programa, os dados associados com a funcionalidade em um objeto e, em seguida, ir usar, mas o programa para utilizar os dados e função tanto, mesmo como encontrá-lo? Eu preciso para extrair o sistema eletivo no papel: estudantes, professores, currículo, etc., e, em seguida, evidente que: os alunos com os dados dos alunos relacionada com a função, os professores têm de dados e funções de professores-relacionada, temos um único aluno, por exemplo,

# 学生的数据有
学校
名字
年龄
性别 # 学生的功能有 选课

detalhado

# 学生1:
    数据:
        学校=清华大学 姓名=李建刚 性别=年龄=28 功能: 选课 # 学生2: 数据: 学校=清华大学 姓名=王大力 性别=年龄=18 功能: 选课 # 学生3: 数据: 学校=清华大学 姓名=牛嗷嗷 性别=年龄=38 功能: 选课

Podemos concluir que uma classe estudante, estudantes usado para armazenar os mesmos dados e funções

# 学生类
    相同的特征:
        学校=清华大学 相同的功能: 选课

 

Depois, temos que fazer é definir uma classe em um programa baseado nos resultados da análise acima, em seguida, chamar os objetos de classe gerado

class Student: # 类的命名应该使用“驼峰体”

    school='清华大学' # 数据 def choose(self): # 功能 print('%s is choosing a course' %self.name)

O tipo mais comum corpo é definir a definição de variáveis ​​e funções, mas na verdade o corpo da classe pode conter qualquer código Python, o código será executado no corpo classe da fase de definição de classe, e eles podem ser usados ​​para armazenar um novo espaço de nome definido na classe nome, você pode imprimir Student .__ dict__ gostaria de ver esta coisa em plena floração no recipiente

>>> print(Student.__dict__) {..., 'school': '清华大学', 'choose': <function Student.choose at 0x1018a2950>, ...}

 

chamada de procedimento é referido como a classe da instância da classe, é para obter o valor de retorno do programa objeto, conhecido como um exemplo ou

>>> stu1=Student() # 每实例化一次Student类就得到一个学生对象 >>> stu2=Student() >>> stu3=Student()

Então stu1, stu2, stu3 todos como o (apenas conteúdo de classe são comuns, mas não os seus dados único), você quer um exemplo do processo para os três alunos para personalizar seus próprios dados exclusivas: nome, sexo, idade, , precisamos adicionar um método __init__ dentro da classe, como a seguir

class Student:
    school='清华大学' #该方法会在对象产生之后自动执行,专门为对象进行初始化操作,可以有任意代码,但一定不能返回非None的值 def __init__(self,name,sex,age): self.name=name self.sex=sex self.age=age def choose(self): print('%s is choosing a course' %self.name)

Então nós re-instanciado em cada três estudantes

>>> stu1=Student('李建刚','男',28) >>> stu2=Student('王大力','女',18) >>> stu3=Student('牛嗷嗷','男',38)

Tome STU1 processo de geração única de analisar, em primeiro lugar chamar a classe gera um STU1 objeto vazio, então STU1 entre parênteses com o parâmetro quando chamado com a classe passada Student .__ o init __ (stu1, 'Li Jiangang', 'M', 28)

def __init__(self, name, sex, age): self.name = name # stu1.name = '李建刚' self.sex = sex # stu1.sex = '男' self.age = age # stu1.age = 28

Irá produzir o espaço de nome de objeto, também pode ser visto com __dict__

>>> stu1.__dict__
{'name': '李建刚', 'sex': '男', 'age': 28}

 

Neste ponto, criamos três objetos com uma classe, armazenamento de objetos cada dados exclusivos, como objetos de conteúdo armazenados são compartilhados

 

O propósito da existência é usar, como acessar o objeto ou classe armazenada no conteúdo?

 

Acesso 3.2 propriedade

3.2.1 atributos de classe e atributos de objectos

 

Definido no nome da classe da classe é o atributo, em seguida, elaborar, classe tem dois atributos: atributos de dados e atributos de função, pode __dict__ valor do atributo de acesso, tais como Student .__ dict __ [ 'escola'], mas Python oferece uma sintaxe especial para acesso a propriedade

Ilustração: mapa spoof

>>> Student.school # 访问数据属性,等同于Student.__dict__['school'] '清华大学' >>> Student.choose # 访问函数属性,等同于Student.__dict__['choose'] <function Student.choose at 0x1018a2950> # 除了查看属性外,我们还可以使用Student.attrib=value(修改或新增属性),用del Student.attrib删除属性。

Operando propriedades de um objecto é a mesma

>>> stu1.name # 查看,等同于obj1.__dict__[‘name'] '李建刚' >>> stu1.course=python# 新增,等同于obj1.__dict__[‘course']='python' >>> stu1.age=38 # 修改,等同于obj1.__dict__[‘age']=38 >>> del obj1.course # 删除,等同于del obj1.__dict__['course']

 

Pesquisa ordem 3.2.2 propriedade e método de ligação

O nome do objeto no espaço só manteve as propriedades únicas do objeto, e o objeto tem atributos semelhantes são armazenadas na classe. O objeto, dará prioridade a olhar para quando você acessar as propriedades do próprio objeto de __dict__, não foi encontrado, em seguida, ir para a aula __dict__ Encontrar

 

1, é uma variável definida no atributo de classe de dados de classe, é compartilhado por todos os objetos, apontando para o mesmo endereço de memória

# id都一样
print(id(Student.school)) # 4301108704 print(id(stu1.school)) # 4301108704 print(id(stu2.school)) # 4301108704 print(id(stu3.school)) # 4301108704

 

2, a função de classe definida é uma classe atributo função, pode ser utilizada a classe, mas devem seguir as regras de parâmetros da função, há vários parâmetros necessidade de passar vários parâmetros

Student.choose(stu1) # 李建刚 is choosing a course Student.choose(stu2) # 王大力 is choosing a course Student.choose(stu3) # 牛嗷嗷 is choosing a course

Mas de facto, a função definida classe é usada principalmente para alvo e se ligam a um alvo, apesar de todos os objectos estão a apontar para as mesmas funções, mas estão ligados a diferentes objectos é métodos de ligao diferentes, cada endereço de memória não é o mesmo

print(id(Student.choose)) # 4335426280 print(id(stu1.choose)) # 4300433608 print(id(stu2.choose)) # 4300433608 print(id(stu3.choose)) # 4300433608

Método para vincular a especial meta é que a ligação a quem deve chamar Quem, quem é chamado, o 'quem'-se como o primeiro argumento é passado automaticamente (__init__ método é a mesma razão )

stu1.choose()  # 等同于Student.choose(stu1) stu2.choose() # 等同于Student.choose(stu2) stu3.choose() # 等同于Student.choose(stu3)

Obrigado a escolher as habilidades de diferentes objetos, embora eles são eletivos, mas Li Jiangang selecionado classe, não iria escolher para Wang Dali, que é "obrigatório" a essência da palavra.

#注意:绑定到对象方法的这种自动传值的特征,决定了在类中定义的函数都要默认写一个参数self,self可以是任意名字,但命名为self是约定俗成的。

 

Em Python tudo é um objeto, e classe Python3 e tipo é um conceito, por isso, teria entrado em contato com o método de ligação

#类型list就是类
>>> list
<class 'list'>  #实例化的到3个对象l1,l2,l3 >>> l1=list([1,2,3]) >>> l2=list(['a','b','c']) >>> l3=list(['x','y'])  #三个对象都有绑定方法append,是相同的功能,但内存地址不同 >>> l1.append <built-in method append of list object at 0x10b482b48> >>> l2.append <built-in method append of list object at 0x10b482b88> >>> l3.append <built-in method append of list object at 0x10b482bc8>  #操作绑定方法l1.append(4),就是在往l1添加4,绝对不会将4添加到l2或l3 >>> l1.append(4) #等同于list.append(l1,4) >>> l1 [1,2,3,4] >>> l2 ['a','b','c'] >>> l3 ['x','y']

 

3.3.3 Resumo

No uso da classe introdução e objeto, mais estamos em pé sobre o princípio subjacente a perspectiva de apresentar as relações entre classes e objetos, mesmo que apenas para estar na perspectiva de uso, é preciso considerar a gramática "Objeto Property" "Propriedades" no final vem de onde, só precisa saber é obter através do objeto sobre ele, para que o objeto é um produto altamente integrado, com o objeto, só precisamos de usar a sintaxe "objeto .xxx" seria você pode obter todos os dados e funções associadas a esse objeto, a solução é muito conveniente e extremamente alto grau de acoplamento.

 

Acho que você gosta

Origin www.cnblogs.com/heirenxilou/p/12654303.html
Recomendado
Clasificación