啊我

[TOC]

面向对象

面向对象:核心就是对象二字,对象就是特征与技能的结合体,一切均为对象

类(类别):怎么把俩个人划分为一类,从眼前的一系列对象中找相似的特征和相似的技能

在程序中,务必保证:<通过类别创造不同的对象>

  • 先定义(类),<类实际上是一种抽象的概念>

class 类名:

相似的特征用变量表示

相似的技能用函数表示

  • 后使用类(用来产生对象)(后产生对象说法一样)

类名 加括号就是() 调用一次,就是实例化一次,实例化一次就得到一个对象

总结:在现实世界中,怎么把由一个个对象,总结成为一个个类

​ 到程序当中,按照一定的语法形式,先把类定义出来,然后把类的对象造出来

如何使用类:

类在定义的阶段,类内部的代码就会运行,将类里面的变量和函数保存在类的名称空间里,类内部一般情况下都是函数的定义和变量的定义,但是也可以写其他的代码

查看类的名称空间:类名点__dict__,返回一个字典形式。:专门用来访问属性,本质操作的就是__dict__

类的内部变量叫类的数据属性(理解为类内部的变量值)

类的内部函数叫类的函数属性(理解为类内部函数的值)

所以你看类里面有变量,有函数,有专门存储类里面变量和函数的名称空间,就意味着可以对类进行一系列的,增,删,改,查的操作。类里面的内部属性实际是一个dict.而操作就是对字典的一系列操作。

查:类明点变量名   或者(函数名)本质就是在类的名称空间里,去找他的属性。

增加:类名点 变量名=值  (增加变量,那如何增加函数)改:方法一样  类名点 变量名=值

删除:  del 类名点变量名 类的操作实际是类的属性操作,属性就是内置的__dict__实例化产生出一个个对象

如何使用对象:


在程序中,务必保证先定义(类),后使用(产生对象)
创建一个对象,实例化的时候,程序自动调用__init__方法,而==__init__方法用来为对象定制对象自己独有的特征,产生自己的名称空间==

lass definition():
school = 'luffcity' 

stu1 = definition('王二丫','女',18)
 def __init__(self,name,sex,age): #可以简单理解__init__与类名加括号后边的参数是一个对应传参的关系,只要调类名加参数,程序自动启动__init__方法,而self指调用本身,与参数无对应关系

    self.Name = name       #stu1.Name='王二丫
    self.Sex = sex             #stu1.Sex='女'
    self.Age = age             #stu1.Age=18
    
def learn(self):
    print('学习')
    
# 后产生对象
stu1 = definition('王二丫','女',18) #definition.__init__(stu1,'王二丫','女',18)
print(stu1.__dict__

#加上__init__方法后实例化的步骤
#1 先造一个空对象 stu1 (没有自己独有的特征)
#2 definition.__init__(stu1,'王二丫','女',18)

[^init_实际就是为实例化一个对象提供服务的,因为实例化一个对象时需要传递给__init__方法参数,才能实例化出不同的对象,(实例化没有参数就是一个空对象),代码块中stu1 这样单独一个就一个空对象,definition()类名加括号就是实例化,既然是实例化就需要实在的参数,如果没有参数,是不会实例化出来的.]:

同样,通过对象可以进行,增,删,改,查的操作.
查
print(stu1.__dict__)
print(stu1.Name)
print(stu1.Sex)
print(stu1.Age)

改
stu1.Name = '李二丫'
print(stu1.__dict__)
print(stu1.Name)

删除
del stu1.Name
print(stu1.__dict__)
print(stu1.Name)

增加
stu1.class_name = 'python开发'
print(stu1.__dict__)
print(stu1.class_name)

查找属性:

class definition():
    school = 'luffcity'
    #            stu1 '王二丫','女',18
    def __init__(self,name,sex,age):
        self.Name = name
        self.Sex = sex
        self.Age = age
        
      def learn(self):
         print('%s在学习 ')
         
# 后产生对象
stu1 = definition('王二丫','女',18)

#类中的数据属性:是所有对象共有的(类当中定义的变量属性与对象的属性是共有的)
print(definition.school)       #luffcity   <从类的角度去访问变量的值>
print(stu1.school)             #luffcity  <从对象的角度去访问变量的值>

definition.learn(stu1)          #从类的角度访问函数属性,  类当中的函数,类自己可以使用,
                              相当于去调类下的函数,意味着调函数时需要传参
                              
                              
print(stu1.learn)                     #从对象的角度访问函数属性,<从对象的角度访问类里的值,>                                         从对象的角度访问类里面的值,直接就stu1.函数名/变量名

类当中的函数属性:是绑定给对象使用的.

绑定到不同的对象,是不同的绑定方法,对象绑定方式时,会把对象本身当做第一个参数传入给self,即自动传值绑定对象

仅以此图说明,函数绑定到不同对象.

猜你喜欢

转载自www.cnblogs.com/sunny7/p/9247961.html