[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,即自动传值
仅以此图说明,函数绑定到不同对象.