本文目录一览:
- 1、python:第二部分:面向对象:面向对象object orinted
- 2、python面向对象编程题?
- 3、Python中的面向对象(进阶)
- 4、python为什么是面向对象的
- 5、python面向对象的问题
python:第二部分:面向对象:面向对象object orinted
. 面向过程:
1、分析解决问题在步骤并解决。
2、公式:程序=算法+数据结构
3、优点:所有环节细节自己掌握
4、缺点:所有细节都自己考虑,工作量左
.面向对象:
1、找出解决问题在人,然后分配职责。
2、公式:程序=对象+交互
(1)思想层面:可模拟现实场景,更接近人类思维。
有利于梳理归纳,分析解决问题。
(2)技术层面:
高复用:对重复代码封装,重复利用。提高开发效率
高扩展:增加新的功能,不修改以前在代码
高维护:代码可读性好,逻辑清晰,结构规整。
。类:抽象的概念,即生活中的类别
对象:类有具体实例,即归属于某个类别的“个体”
类是创建对象的模板
----数据类型 :名词类型的状态
----方法成员:动词类型的形为
类与类形为不同对象与对象数据不同
类的语法:class 类名:
class che:
#数据成员
def __init__(self,name,chelun):#self是调用当前方法的对象地址
self.name=name
self.chelun=chelun
#形为成员
def chexing(self):
print(self.name+"开车")
#创建对象:实际在调用_init_方法
qiche=che("小桥车","更换")#self:参数自动将对象地址传入方法
#调用对象的形为
qiche.chexing()#self:参数自动将对象地址传入方法
print(qiche.name)#self:参数自动将对象地址传入方法
print(qiche.chelun)#self:参数自动将对象地址传入方法
1、创建类并调用(列表反置)
class listpx:
def __init__(self,lista):
self.lista=lista
self.imte=0
self.ymte=0
def paixu(self):
for self.imte in range(len(self.lista)):
for self.ymte in range(self.imte + 1, len(self.lista)):
self.lista[self.imte], self.lista[self.ymte] = self.lista[self.ymte], self.lista[self.imte]
print(self.lista)
list01=[2,3,1,5,4]
listb=listpx(list01)
listb.paixu()
list02=[23,54,78]
listc=listpx(list02)
listc.paixu()
#调用规则:先给类变量传值,再调用类方法。
python面向对象编程题?
这是一个面向对象编程的题目,可以考虑如下思路:
创建省份类,所包含的属性为名称,即省份名称
创建地级市类,继承省份类,所包含属性(为考虑后续交易相关的操作)如下:
地级市名称
所持有货物数量
所持初始资金数量(为了计算利润)
当前所持资金数量
供应商(这也是一个地级市类的对象)
从供应商处购买商品次数计次
卖给其他买家商品次数计次
其所包含的方法如下:
添加供应商(将供应商的引用添加至属性“供应商”中)
购买一个商品:供应商货物数量-1,所持资金数量+100,购买者货物数量+1,所持资金数量-100,从供应商处购买商品次数计次+1
卖出一个商品(参数表:购买者):卖出者货物数量-1,持有资金数量+110,购买者货物数量+1,持有资金数量-110,卖给其他买家商品次数计次+1。若卖给其他买家商品次数计次对4取余数为0,则:卖出者持有资金数量-110+70,供应商货物数量+1,供应商所持资金数量-70
3. 创建主程序:创建一个省份和三个地级市对象,创建循环体,在循环中依次从供应商处购买商品,当购买次数超过4次后,向第三个买家出售商品。
具体代码如下:
Python中的面向对象(进阶)
一、实例方法,类方法,静态方法
我们首先写一个类,里面包含这三种方法。
可以看到,我们用到了两个装饰器。
我们用类和实例分别调用下类方法
我们用类和实例分别调用下静态方法
静态方法其实就是把一个普通的函数写在类里,与直接在外层写一个函数是一样的,本质上是一个函数。
为了方便理解,我们分别打印下这些方法的类型
通过type()查看对象是方法还是函数
此外,还可以通过inspect模块判断某个对象是否是某种类型,返回布尔值。
用法
小Tips:概念理解
直接def定义的,我们叫做函数
把函数放到类里,我们叫做方法
方法可以通过装饰器staticmethod转为(放在方法里的)函数
继承
一个类继承另一个类时,会自动获得另一个类的所有属性和方法,被继承的类称之为父类,新类称为子类。子类拥有父类所有的属性和方法,并且可以定义自己的属性和方法
我们以上边的Rectangle类为父类来试一下
1)完全继承
可以看到,子类完全继承父类后,可以直接调用父类的所有方法。
2)部分继承
部分继承:继承父类后,修改父类的同名方法
我们试一下,Square继承Rectangle后,修改__init__()方法
3)拓展父类的方法
在保留父类中某个方法的代码同时,对方法进行拓展
可以在方法中加入"super().方法名"来实现
4)@property
python为什么是面向对象的
Python虽然是解释型语言,但从设计之初就已经是一门面向对象的语言,对于Python来说一切皆为对象。正因为如此,在Python中创建一个类和对象是很容易的,当然如果习惯面向过程或者函数的写法也是可以的,Python并不做硬性的限制。
Python的面向对象特征如下:
封装
面向对象程序设计中的术语对象(Object)基本上可以看做数据(特性)以及由一系列可以存取、操作这些数据的方法所组成的集合。传统意义上的“程序=数据结构+算法”被封装”掩盖“并简化为“程序=对象+消息”。对象是类的实例,类的抽象则需要经过封装。封装可以让调用者不用关心对象是如何构建的而直接进行使用。
继承
类继承:
继承给人的直接感觉是这是一种复用代码的行为。继承可以理解为它是以普通的类为基础建立专门的类对象,子类和它继承的父类是IS-A的关系。
多重继承:
不同于C#,Python是支持多重类继承的(C#可继承自多个Interface,但最多继承自一个类)。多重继承机制有时很好用,但是它容易让事情变得复杂。
多态
多态意味着可以对不同的对象使用同样的操作,但它们可能会以多种形态呈现出结果。在Python中,任何不知道对象到底是什么类型,但又需要对象做点什么的时候,都会用到多态。方法是多态的,运算符也是多态的。
相关推荐:《Python教程》以上就是小编分享的关于python为什么是面向对象的的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!
python面向对象的问题
第二种相当于是局部变量,除了init函数外,其他的地方都不能访问
第三种相当于是类的属性,每个具体的对象有不同的值,在其他类中如果生成了对象b,如b=a(),使用b.aa可以访问到。
第一种是定义了类的变量,所有的对象共享该变量,在其他类中使用a.aa可以访问到,注意这里a是类的名字,也可以通过每个对象访问到,如b=a() c=a() ,则b.aa与c.aa及a.aa都是访问的一个东西,值是一样的。