python15 - day07 面向对象

1. 面向对象编程

1.1 简介

面向对象的三个特性:封装、多态、继承。

私有方法、私有属性

类变量、实例变量

面向过程编程:告诉计算机一步一步的要做什么。

面向对象编程的简单演示:

#定义一个类
class Dog:
    def __init__(self,name):  #构造函数,在实例化时做一些类的初始化工作。
        self.name = name
    #定义属性
    def bulk(self):
        print("%s:汪汪汪" % self.name)

d1 = Dog("陈")
d2 = Dog("王")
d3 = Dog("张")
d4 = Dog("李")

d1.bulk()
d2.bulk()
d3.bulk()
d4.bulk()

执行结果:

C:\Users\liuxiaotao\AppData\Local\Programs\Python\Python35-32\python.exe C:/Users/liuxiaotao/Desktop/Python/code/day07/object_dog.py

陈:汪汪汪

王:汪汪汪

张:汪汪汪

李:汪汪汪

把一个类编程具体对象的过程,叫做实例化。

1.2 析构函数

在实例释放、销毁的时候自动执行的函数,通常做一些收尾工作,如关闭数据库连接等。如果需要关闭,可以手动del删除对象。

class people(object):
    def __init__(self,name,age,country="china"):
        self.name = name
        self.age = age
        self.country = country
    def eat(self):
        print("%s is eatting" % self.name)
    def __del__(self):
        print("%s is dead" % self.name)
    def sleepping(self):
        print("%s is sleepping" % self.name)

备注:该模块执行结束后,会自动执行析构函数,这里是打印一句话。

1.3 私有属性和私有方法

class people(object):
    def __init__(self,name,age,country="china"):
        self._name = name      #私有属性
        self.age = age
        self.country = country
    def _eat(self):            #私有方法
        print("%s is eatting" % self.name)
    def __del__(self):
        print("%s is dead" % self.name)
    def _sleepping(self):
        print("%s is sleepping" % self.name)

私有属性和私有方法只能在当前实例中进行调用,该模块以外的实例无法调用。

1.4 继承

# _*_ coding:utf-8 _*_
# Author :kaige

class people:#(经典类写法)

class people(object):(新式类写法)

    def __init__(self,name,age,country="china"):
        self.name = name
        self.age = age
        self.country = country
    def eat(self):
        print("%s is eatting" % self.name)
    def __del__(self):
        print("%s is dead" % self.name)
    def sleepping(self):
        print("%s is sleepping" % self.name)

class men(people):
    def piao(self):                #子类自己定义的方法
        print("piaoing.......done")

m1 = men("kaige",22)
m1.eat()              #继承父类的方法
m1.piao()             #子类自己的方法

class people:
    def __init__(self,name,age,country="china"):
        self.name = name
        self.age = age
        self.country = country
    def eat(self):
        print("%s is eatting" % self.name)
    #def __del__(self):
        #print("%s is dead" % self.name)
    def sleepping(self):
        print("%s is sleepping" % self.name)

class men(people):
    def piao(self):
        print("piaoing.......done")

class women(people):
    def __init__(self,name,age,money):       #给某个类单独添加属性
        people.__init__(self,name,age,country="china")

       super(women,self).__init__(name,age,country="china")#第二种方法

        self.money = money

    def brun(self):
        print("%s brunning......wiht %s done" % (self.name,self.money))

m1 = men("kaige",22)
wo2 = women("xiaoqing",26,2000)
m1.eat()
m1.piao()
print("%s come from %s" % (m1.name,m1.country))
wo2.brun()

1.5 多继承的优先原则

新式类和经典类的区别在于多继承的顺序问题。

继承原则有广度优先和深度优先两种原则:

  • python3中都是广度优先
  • python2中经典类是深度优先原则,新式类是广度优先原则

以上演示因为是python3,遵循广度有限的原则:

1.6 多态

多态特性:一种接口,多种实现

时间: 2024-11-05 09:09:28

python15 - day07 面向对象的相关文章

python开发学习-day07(面向对象之多态、类的方法、反射、新式类and旧式类、socket编程)

s12-20160227-day07 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin

day07面向对象进阶

类.__init__查看对象的函数属性 类.__dict__查看类的属性对象 定义在类内部的变量,是所有对象共有的,id相同 定义在类内部的函数,是绑定在所有对象上,给对象用的obj.func()就会吧obj传到func(obj) 类内部的方法都是绑定方法,绑定到对象上 绑定方法(类绑定,对象绑定),非绑定方法 面向对象的特性 类与对象 对象是特征(变量)与技能(函数)的结合 类是一系列对象共有的特征和技能 现实中,先有对象,再总结归纳出类,程序中,先定义类再实例化对象 类的第一种用法,实例化

day07面向对象

1 抽象类 为什么使用抽象类 1:定义Dog类 有颜色属性和叫的方法 2:定义Bird类 有颜色属性和叫的方法 3:定义其父类Animal 1:抽取共性颜色属性和叫的方法 1:颜色的属性可以使用默认初始化值. 2:叫的方法在父类中如何定义? 1:狗是旺旺 2:鸟是叽叽喳喳 3:可以将父类的方法定义为狗叫让鸟继承父类重写叫的方法 1:鸟怎么确定是否要重写父类方法. 2:不重写,编译和运行都没有问题,只是执行鸟叫的方法就会出现狗叫 4:父类的方法很难确定. class Animal { String

Python面向对象-day07

写在前面 上课第七天,打卡: 时间的高效利用: 前言: 今天egon老师补充了下 is 和 == 的区别,整理如下:Python中变量的属性以及判断方法 一.面向过程和面向对象 - 1.面向过程 核心是过程,过程就是解决问题的步骤:流水线.机械式: 优点:复杂的问题简单化,分成多个功能单元: 缺点:可扩展性差 应用:Linux内核.httpd.git - 2.面向对象 核心是对象: 要理解对象,应该把自己当做上帝,在上帝眼里一切存在的事物都是对象,不存在的也可以创建出来: 对象是 特征(变量)和

面向对象【day07】:多态-面向对象使用场景--知识点回顾

本节内容 多态 面向对象使用场景 知识点回顾 一.多态 一.概述 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作.简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针. 那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化:继承可以扩展已存在的代码模块(类):它们的目的都是为了--代码重用.而多态则是为了实现另一个目的--接口重用!多态的作用,就是为了

面向对象【day07】:类的属性-继承-经典类

本节内容 类的公有属性 析构函数 类的继承 新式类和经典类 一.类的公有属性 一.概述 前面我们讲了类的私有属性,现在我们来说说类的公有属性,这边很容易被人弄混淆,有人觉的,在__init__()构造方法中,除了私有属性,其他的都是公有属性了,其实这是一个错误的结论,并不是定义在__init__()初始化方法中的属性是公有属性(除私有属性),那什么是公有属性呢?揭起了大家的好奇心. 定义:指的是所属这个类的所有对象,都可以访问的属性,叫做公有属性. 二.公有属性 2.1 定义 说明:在类中直接定

面向对象-day07

一.类与对象 1.面向对象的程序设计及存在的意义 面向过程: 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点:复杂的东西简单化,极大的降低了程序的复杂度 缺点:功能单一性,一套流水线或者流程就是用来解决一个问题,生产汽水的流水线无法生产汽车,即便是能,也得是大改,改一个组件,牵一发而动全身. 应用场景:变动极少的一旦完成基本很少改变的场景,著名的例子有Linux内核.git.Apache HTT

python基础--常用模块与面向对象基础

1常用模块 1.1 xml xml是实现不同语言或程序之间进行数据交换的协议 xml的格式如下: <?xml version="1.0"?> <data> <country name="Liechtenstein"> <rank updated="yes">2</rank> <year>2008</year> <gdppc>141100</gdp

Java之面向对象详细总结

学习面向对象已经整整一周了,面向对象的三大特性继承.封装.多态的基本概念及应用场景,案例示例都已详细学习了,几天称着周末和刚讲完,在此对Java中比较抽象的面向对象做个小的总结,加强一下记忆与理解: 1.面向对象三大特征: 1)封装: 1.1)类:封装的对象的数据和行为 1.2)方法:封装的是具体的业务实现细节 1.3)访问控制修饰符:封装的是访问的权限--保护数据 2)继承: 2.1)目的:代码的重用 2.2)父类:共有的  子类:特有的 继承后子类具有:父类的和子类的 2.3)单一继承,传递