北大陈斌-Python语言基础与应用D11高级特性:面向对象

什么是对象

对象属性和方法的引用
<对象名>.<属性名>可以用在赋值语句和表达式中
如“abc”.upper()、(1+2j).real
对象的属性和方法可以随时增加和删除

类的定义和类的调用

1、类封装了对应现实实体的性质和行为,实例对象式是类的具体化
封装、继承、多态
2、类名和函数调用相同:类名用大写字母开头,函数用小写字母开头
3、class语句
class <类名>:
<一系列方法的调用>
4、类的初始化
class <类名>:
def_init_(self,<参数表>):
def <方法名>(self,<参数表>):

init()是一个特殊的函数名,用于根据类的定义创建实例对象,第一个参数必须为self

5、调用类
<类名>(<参数>)
调用类会创建一个对象: obj = <类名>(<参数表>),返回一个对象实例,类方法中的self指这个对象实例

使用点(.)操作符来调用对象里的方法
t = turtle.Pen()

类定义中的特殊方法

特殊方法(魔术方法):使用内置操作,所有特殊方法的名称以一对下划线_开始和结束
1、构造与解构
对象构造器,实例化对象时调用
init(self,[…)
析构器,销毁对象时调用
del(self,[…)

2、算术运算
算术操作符
add(self,other): +
sub(self,other): -
mul(self,other): *
div(self,other): /
反运算
当左操作数不支持相应的操作时被调用
radd(self,other)
大小比较
eq(self,other): ==
ne(self,other): !=
lt(self,other): < 与sort()和sorted()
gt(self,other): >
le(self,other): <=

3、其他特殊方法
str(self):自动转换为字符串
reper(self):返回一个用来表示对象的字符串
len(self):返回元素个数

面向对象类的继承

继承方式
class <子类名>(<父类名>):
def <重定义方法>(self,…):
若子类中存在一个重新定义的方法名和父类中一个方法一样,即Override覆盖父类方法
子类天机父类没有的方法和属性
class GasCar(Car):
def init(self,name,capacity)
super()._init #因父类init被覆盖了super()表示返回一个父类
self.capacity = capacity

self
类定义中,所有方法的首个参数一般都是self,作用:在类内部,实例化过程中传入的所有数据都赋给这个变量
<对象>.<方法>(<参数>)等价于<类>.<方法>(,<参数>)

实例:父类为Car,子类为GasCar和ElecCar

class Car:
    def __init__(self,name):
        self.name = name
        self.remain_mile = 0
   
    def fill_fuel(self,miles):  #加燃料里程,能跑多少英里
        self.remain_mile = miles
    
    def run(self,miles):  #需要跑miles英里
        print(self.name, end = ':' )
        if self.remain_mile >=miles:
            self.remain_mile -= miles
            print("run %d miles!" %(miles,))
        else:
            print("fuel out!")

class GasCar(Car):
    def fill_fuel(self,gas):  #加汽油gas升
        self.remain_mile = gas * 6.0  #每升跑6英里

class ElecCar(Car):
    def fill_fuel(self,power):  #充电power度
        self.remain_mile = power * 3.0  #每度电跑3英里

gcar = GasCar("BMW")
gcar.fill_fuel(50.0)
gcar.run(200.0)

ecar = ElecCar("Tesla")
ecar.fill_fuel(60.0)
ecar.run(200.0)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值