拥有女朋友的,面向对象

前言

复习面向对象


提示:以下是本篇文章正文内容,下面案例可供参考

一、面向对象是什么?

再次之前,我们按照功能所需求的顺序过程这种被称为“面向过程”的编程。

把数据和对数据的操作用一种叫做“对象”的东西包裹起来。这种被成为“面向对象”的编程

面向对象编程最主要的两个概念就是:类(class)和对象(object)

二、类(class)

二.1.什么是类

类是一种抽象的类型,而对象是这种类型的实例。

举个子:

女朋友”作为一个抽象的概念,可以被看成是一个类。而一支实实在在的女朋友,则是“女朋友”这种类型的对象。

同时:

一个类可以有属于它的函数,这种函数被称为类的“方法”。

一个类/对象可以有属于它的变量,这种变量被称作“”。

域根据所属不同,又分别被称作“类变量”和“实例变量”。

同样的子:

每个女朋友有自己的外观面貌,“外观面貌”就是某个女朋友的域,也是这位女朋友的实例变量。

类变量 : 假设女朋友(拥有女朋友的)这是一种种类,而女朋友的“产生”就可以看做这拥有女朋友的类变量。因为这个域不属于某一个女朋友,而是这种类型的共有属性。

域和方法被合称为类的属性。

s = '你好,星月'
#s被赋值后就是一个字符串类型的对象
l = s.split()
#split是字符串的方法,这个方法返回一个list类型的对象
#l是一个list类型的对象




通过dir()方法可以查看一个类/变量的所有属性:
dir(s)
dir(list)

三.创建一个类

三.1 如何创建一个类:(关键字class加上类名用来创建一个类。


class XY:
    pass   #pass语句,表示一个空的代码块。

mc = XY()
print (mc)

类名加圆括号()的形式可以创建一个类的实例,也就是被称作对象的东西。我们把这个对象赋值给变量xy。于是,xyt现在就是一个XY类的对象。

输出结果:<__main__.XY instance at 0x7fd1c8d01200>

这里  xy 是__main__模块中 XY 来的一个实例(instance),后面的一串十六进制的数字是这个对象的内存地址。

三.1.2 类加上域:


class XY:
    name = '星月'  #增加一个变量  name

    def YYDS(self):   #增加了一个类方法  YYDS
        print ('Hello %s' % self.name)    #self.name调用变量  name

mc = XY()
print (mc.name)
mc.name = 'milk'  #更改变量  name
mc.YYDS()

解:这里给我的 Class 类增加一个变量  name然后又增加了一个类方法  YYDS   调用类变量的方法是“对象   点上  变量名”。你可以得到它的值,也可以改变它的值。

注意:类方法和我们之前定义的函数区别在于,第一个参数必须为self。而在调用类方法的时候,通过“对象  点上  方法名()”格式进行调用,而不需要额外提供self这个参数的值。self在类方法中的值,就是你调用的这个对象本身。

输出结果:

星月

Hello milk

四.创建并使用。

先举个栗子: 如题,有一百个苹果分给5个人,一个人能拥有多少个。(分什么,我全要,咳咳开个玩笑,正题看下面)

#面向过程方法(基础)


#有一百个苹果分给5个人,一个人能拥有多少个。

apple = 100

child = 5

Average = apple/child

print(Average)

小儿科了吧,继续往下如何用面向对象操作:

#面向对象(本文)
class B:
    child = 0

    def drive(self, apple):
        time = apple / self.child
        print (time)

b = B()
b.child = 5
b.drive(100)

对比:面向过程把数据和处理数据的计算全部放在一起,当功能复杂之后,就会显得很混乱,且容易产生很多重复的代码。而面向对象,把一类数据和处理这类数据的方法封装在一个类中,让程序的结构更清晰,不同的功能之间相互独立。这样更有利于进行模块化的开发方式。

提示: 多加联系

五 面向过程的方法

__init__函数会在创建一个类的对象(实例)时自动调用,用来初始化这个实例。它的参数,要在创建对象(实例)的时候提供,通过提供一个数值来初始化 某 值

__init__是python的内置方法,类似的函数名前后是两个下英文划线

说实话这里我已经忘完了,网上找了一个看看吧。

假设我们有一辆汽车,我们知道它的速度(60km/h),以及A、B两地的距离(100km)。要算出开着这辆车从A地到B地花费的时间。 自行车和汽车有着相同的属性:速度(speed)。还有一个相同的方法(drive),来输出行驶/骑行一段距离所花的时间。但这次我们要给汽车增加一个属性:每公里油耗(fuel)。而在汽车行驶一段距离的方法中,除了要输出所花的时间外,还要输出所需的油量。

创建一个叫做Vehicle的类,表示某种车,它包含了汽车和自行车所共有的东西:速度,行驶的方法。然后让Car类和Bike类都继承这个Vehicle类,即作为它的子类。在每个子类中,可以分别添加各自独有的属性。

Vehicle类被称为基本类或超类,Car类和Bike类被成为导出类或子类。

class Vehicle:
    def __init__(self, speed):
        self.speed = speed
        
    def drive(self, distance):
        print ('need %f hour(s)' % (distance / self.speed))
        
class Bike(Vehicle):
    pass
    
class Car(Vehicle):
    def __init__(self, speed, fuel):
        Vehicle.__init__(self, speed)
        self.fuel = fuel
        
    def drive(self, distance):
        Vehicle.drive(self, distance)
        print ('need %f fuels' % (distance * self.fuel))

b = Bike(15.0)
c = Car(80.0, 0.012)
b.drive(100.0)
c.drive(100.0)

class定义后面的括号里表示这个类继承于哪个类。Bike(Vehicle)就是说Bike是继承自Vehicle中的子类。Vehicle中的属性和方法,Bike都会有。因为Bike不需要有额外的功能,所以用pass在类中保留空块,什么都不用写。

Car类中,我们又重新定义了__init__和drive函数,这样会覆盖掉它继承自Vehicle的同名函数。但我们依然可以通过“Vehicle.函数名”来调用它的超类方法。以此来获得它作为Vehicle所具有的功能。注意,因为是通过类名调用方法,而不是像之前一样通过对象来调用,所以这里必须提供self的参数值。在调用超类的方法之后,我们又给Car增加了一个fuel属性,并且在drive中多输出一行信息。

总结

以上就是面向对象的知识点,可查看这一篇文章。面向对象习题测试(含答案)_星月是差生的博客-CSDN博客_面向对象习题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值