python类和对象详解_python类和对象解析

类和对象

定义类

类由三个部分组成:

类的名称:类型

属性:一组数据

方法:允许对进行操作的方法 (行为

创建和使用类

普通定义类和对象

class car:

def move(self):

print("车在奔跑")

def toot(self):

print("车在鸣笛。。滴滴。。")

#创建一个对象

BMW=car()

#定义对象的属性

BMW.color="黑色"#

BMW.wheelNum=4

#调用类方法

BMW.move()

BMW.toot()

#调用对象的属性

print(BMW.color)

print(BMW.wheelNum)

4.init_()构造方法和self

如果向上述例子,将此类下所有的对象都有该属性,因此,可以构造init(self)方法,将对象属性定义下来。

class car:

def __init__(self):#self语法没有什么特殊的意义,第一个必须存在

self.wheelNum=4#必须用self去定义

self.color="黑色"#不可更改

def move(self):

print("车在奔跑")

def toot(self):

print("车在鸣笛。。滴滴。。")

#创建第一个对象

BMW=car()

print(BMW.color)

#创建第二个对象

AA=car()

#如果与定义类属性中的不一致,则可自行定义

AA.color="白色"

print(AA.color)

#定义对象的属性

BMW.color="黑色"#

BMW.wheelNum=4

#调用类方法

BMW.move()

AA.toot()

----------

传入形参和实参

#改进:形参-实参

class car:

def __init__(self,color):#self语法没有什么特殊的意义,第一个必须存在

self.wheelNum=4#必须用self去定义

self.color=color

def move(self):

print("车在奔跑")

def toot(self):

print("车在鸣笛。。滴滴。。")

#因为init定义了参数,所以在调用的时候必须传入实参

BMW=car("红色")

print(BMW.color)

AA=car("黑色")

print(AA.color)

----------

默认参数

class car:

def __init__(self,color="白色"):

self.wheelNum=4

self.color=color

#如果传入参数,则运行出指定参数

BMW=car("红色")

print(BMW.color)

#如果没传入,则运行出默认参数

AA=car()

print(AA.color)

红色

白色

案例

根据上两节创建一个Dog类

创建出多个狗狗对象,比如泰迪、拉布拉多等

class dog():

def __init__(self,name,color):

self.name=name

self.color=color

def eat(self):

print("%s啃骨头"%self.name)

泰迪=dog("小黑","黑色")

print("泰迪的颜色是%s"%泰迪.color)

泰迪.eat()

拉布拉多=dog("大黄","黄色")

print("拉布拉多的颜色是%s"%拉布拉多.color)

拉布拉多.eat()

answer:

泰迪的颜色是黑色

小黑啃骨头

拉布拉多的颜色是黄色

大黄啃骨头

继承

子类可以调用父类,父类不可以调用子类

先执行子类,若子类属性定义名与父类相同,则执行子类属性;

-

#父类

class person():

def __init__(self,name,hair="长发"):

self.name=name

self.hair=hair

def run(self):

print("%s正在跑步锻炼"%self.name)

#子类

class women(person):

# def __init__(self, color):

# self.color=color

def dancing(self):

print("唱歌跳舞")

def run(self):

print("在跑步")

#创建一个子类对象

bingbing=women("白色")

#我们想要调用子类中的__init__,但是与父类相同了,则拒绝执行将白色传递给color,这个白色是以name形式传递给父类中的__init__中的name参数

print(bingbing.dancing())

#dancing属性在父类中没有,执行子类

#bingbing.color()

#不知道为什么会报错

print(bingbing.run())

#父类与子类均有,执行子类,若将子类注释掉,则会执行父类

案例1:

class person():

def __init__(self,name,hair="长发"):

self.name=name

self.hair=hair

def run(self):

print("%s正在跑步锻炼"%self.name)

class women(person):

# def __init__(self, color):

# self.color=color

def dancing(self):

print("唱歌跳舞")

def run(self):

print("在跑步")

bingbing=women("白色")

print(bingbing.dancing())

print(bingbing.run())

answer:

唱歌跳舞

在跑步

案例2:

class person():

def __init__(self,name,hair="长发"):

self.name=name

self.hair=hair

def run(self):

print("%s正在跑步锻炼"%self.name)

class women(person):

# def __init__(self, color):

# self.color=color

def dancing(self):

print("唱歌跳舞")

#def run(self):

#print("在跑步")

bingbing=women("白色")

print(bingbing.dancing())

print(bingbing.run())

#将子类里的run注释掉就可以执行父类的run了

answer:

唱歌跳舞

白色正在跑步锻炼

多继承

语法:

class Derivedclassname(base1,base2,base3):

statement-1

.

.

.

statement-n

先执行子类,再从左向右依次执行父类

如果子类中没有构造器,会调用父类的构造器,如果是多继承,会调用从左向右第一个有构造器的父类构造器,方法的调用也一样

#第一个父类

class person():

def __init__(self,name,hair="长发"):

self.name=name

self.hair=hair

def run(self):

print("%s正在跑步锻炼"%self.name)

#第二个父类

#class women(person):#一定去掉,因为这两个父类是没有关系的,不能是他的子类,否则会出现报错

class women():

# def __init__(self, color):

# self.color=color

def dancing(self):

print("唱歌跳舞")

def run(self):

print("在跑步")

#创建一个子类对象

class 创造(person,women):

def sing(self):

print("%s在唱歌"%self.name)#完全可以调用父类中的属性

num=创造("杨超越")

num.run()#执行第一个父类

num.sing()

answer:

杨超越正在跑步锻炼

杨超越在唱歌

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值