Python培训
400-996-5531
学习目标:
1-面向对象编程
2-类和对象
3-对象的属性和方法
4-类的特性
Python面向对象编程
一种编程程序的设计思想,把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。
在Python中,所有数据类型都可以视为对象,也可以自定义对象。自定义的对象数据类型就是面向对象中的类(class)概念。
面向对象的设计思想是抽象出Class(类)和instance(实例),面向对象的抽象程度比函数高,一个类即包含数据又包含操作数据的方法。
类和对象
面向对象编程的两个非常重要的概念:类和对象
对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组的景象定义,提出了另外一个新的概念——类
类
具有相似内部状态和运动规律的实体的集合。具有相同发生和行为事物的统称,类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在。一个类可以找到多个对象。
对象
某一个具体事物的存在,在现实世界中可以是看得风措得着的,可以是直接使用的。
类与对象之间的关系:类就是创建对象的模板
定义类和创建对象
定义一个类和创建对象,格式如下:
#创建类——经典方法 class 类名: #class-关键字,类名的命名使用大驼峰命名法,即首字母大写 #如下: class Hero: #创建类——新方法 class Hero(object):#object是python里所有类的最顶级父类 #函数,在类中叫做方法 #创建方法 def info(self):#info是一个实例方法,第一个参数一般是self:表示实例对象本身。 print("这是面向对象hero") #创建对象 对象名1 = 类名() 对象名2 = 类名() 对象名3 = 类名() 对象名(不必遵循大驼峰命名法) = 类名() my_hero = Hero() #对象的使用方法,对象名.(点语法)方法名 my_#() #输出结果: 这是面向对象hero #再创建一个对象 my_hero2 = Hero() print(my_hero) print(my_hero2) #输出结果: <__main__.Hero object at 0x000001F23E784400>#地址:在存储机制中 <__main__.Hero object at 0x000001F23E761F98>#地址
对象的属性和方法
获取和添加对象的属性
class teacher(object): def show(self): print("今天北京下雪了") #创建对象 teacher_zhang = teacher() #添加属性、特点、特征 teacher_zhang.name = "张三" teacher_zhang.age = 20 teacher_zhang.sex = "男" #获取属性,通过点语法 print(teacher_zhang.name)
输出结果:张三
#修改属性 teacher_zhang.age = 30 print(teacher_zhang.age)
输出结果:30
init 魔法函数:用来做属性的初始化
class teacher(object): def __init__(self): print("这是init方法") def showName(self): print("我的名字") zhangsan = teacher() zhangsan.showName() #输出结果 这是init方法 我的名字 #__init__()方法,在创建一个对象时自动被调用,不需要手动调用 即: class teacher(object): def __init__(self): print("这是init方法") def showName(self): print("我的名字") zhangsan = teacher() #输出结果: 这是init方法 #有参数的init方法 class teacher(object): def __init__(self,name,age): print("这是init方法") self.name = name self.age = age print(name,age) def showName(self): print("我的名字") zhangsan = teacher("张三",20) #输出结果 张三 20
类的特性:封装、继承、多态
继承:多个类之间的所属关系
class Father(object): def __init__(self,name): self.name = name print("我叫%s"%self.name) def info(self): print("我来自") class Son(object): def show(self): print("展现我自己") guoQilin = Son() guoQilin.show() #输出结果:展示我自己
单继承:Son类继承于Father
class Father(object):#父类:基类 def __init__(self,name): self.name = name self.family = "郭氏" print("我叫%s"%self.name) def info(self): print("我来自%s家族"%self.family) class Son(Father):#子类,通过继承,可以使用父类中的方法 def show(self): print("展现我自己") def info(self): print("我是德云社新一代,个性就是要与众不同") guoQilin = Son("郭麒麟") #”郭麒麟“是属性,guoQilin是一个对象 guoQilin.show() #() #输出结果 我叫郭麒麟 展现我自己 我是德云社新一代,个性就是要与众不同
子类在继承的时候,子类定义小括号中父类的名字;父类中的属性与方法都会传给子类;虽然子类没有定义init方法,但是父类有,子类应付使用父类的方法。
多继承:
#多继承 class Father(object): def __init__(self,name): self.name = name self.family = "郭氏" print("我叫%s"%self.name) def info(self): print("我来自%s家族"%self.family) class ShiFu(object): def __init__(self): self.teacher = "于氏门生" def speak(self): print("我要说相声") class Son(Father,ShiFu): def show(self): print("展现我自己") def info(self): print("我是德云社新一代,个性就是要与众不同") guoQilin = Son("郭麒麟") #”郭麒麟“是属性,guoQilin是一个对象 guoQilin.show() #() guoQilin.speak() #输出结果 我叫郭麒麟 展现我自己 我是德云社新一代,个性就是要与众不同 我要说相声
#魔法属性,可以查看继承顺序,子类,父类,师父类
print(Son.__mro__) #输出结果 (<class '__main__.Son'>, <class '__main__.Father'>, <class '__main__.ShiFu'>, <class 'object'>)
重写父类方法
子类继承父类,父类的方法满足不了子类的需要可以对父类的方法进行重写;重写的特点:继承关系,方法名相同
属性方法
类属性与实例属性
类属性就是类对象所拥有的属性,这被所有类对象的实例对象所共有,在内存中只存在一个副本。
#类属性 class People(object): #创建一个类 ame = "tom" #公有的类属性 __age = 12 #私有的类属性 p = People() #创建一个对象 #类的共有属性,实例(对象)与类都可以调用 print(p.name) print(People.name) #输出结果: tom tom #私有的类属性,只能在类里面调用 print(p._age) print(People._age) #实例属性 class People(object): ame = "tom" #类属性,直接在类里面写的 def __init__(self):#self会将其下的属性指给对象 self.name = "xiaowang" #实例属性 self.age = 20 p = People() p.age = 12 print(p.name) print(p.age) #输出结果 xiaowang 12 可以用实例属性改掉类属性
静态方法和类方法
类方法是类对象所拥有的方法,第一个参数必须是类对象,一般以cls作为第一个参数,能够通过实例对象和类对象去访问。类方法用@classmethod修饰。
静态方法用@staticmethod修饰,不能传入self,是独立的单纯的函数 。
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved