最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

python面向对象实例大全_类和方法的创建与调用

XAMPP案例 admin 664浏览 0评论
亲爱的小伙伴们看见标题就知道了,今天又是头痛的一天,咱们话不多说,直接干货上!

小知识点

小知识点之默认参数(直接在参数后边赋值,就是该参数的默认数值)

def qiuhe(a,b=8):
    s = a+b
    print(s)
qiuhe(1)
结果为9

类和方法的创建与调用

1、类class、方法def的创建和调用(创建对象xiao_ming即调用类,xiao_ming.run()即调用run()方法)

# 定义类的模版
class Person:
    def run(self):
        print("-----run------")
    def est(self, food):
        print("-----food is %s-----" % food)
    def sleep(self):
        print("-----sleep-----")
# 对象变量 = 类名
xiao_ming = Person()
# 调用方法
xiao_ming.run()
xiao_ming.est("chicken")
xiao_ming.sleep()

2、在类外部给类中对象添加属性(实际并不适用)

# 添加对象属性值
class cat:
    """当前是猫类"""
    def eat(self):
        print("-----%s 爱吃鱼------" % self.name)
    def drink(self, water):
print("-----小猫咪要喝 %s------" % water)
# 调用类和方法
lazy_cat = cat()
# 添加name属性
lazy_cat.name = "tom_cat"
print(lazy_cat.name)
# 调用方法
lazy_cat.eat()
lazy_cat.drink("农夫山泉")

3、在类内部给类中对象添加属性(过渡方法)

# 添加对象属性值
class cat:
    """当前是猫类"""
    def __init__(self):
        """初始化方法"""
        self.name = "TOM_cat"
    def eat(self):
        print("-----%s 爱吃鱼------" % self.name)
    def drink(self, water):
print("-----小猫咪要喝 %s------" % water)
# 调用类和方法
lazy_cat = cat()
print(lazy_cat.name)
# 调用方法
lazy_cat.eat()
lazy_cat.drink("农夫山泉")

 

4、最终常用版==》类只是模版,每个对象都可以有自己的name属性名

# 类模版
class Cat:
    """猫类"""
    def __init__(self, new_name):
        """初始化方法"""
        self.name = new_name
    def eat(self):
        print("——————%s 爱吃鱼——————" % self.name)
# 对象tom_cat调用方法eat
tom = Cat("TOM")
tom.eat()
# 对象bosimao调用方法eat
bosimao = Cat("波斯猫")
bosimao.eat()

输出结果如下:

——————TOM 爱吃鱼——————
——————波斯猫 爱吃鱼——————

三个实例

我们拿到需求时,一定先分析一下,谁作为类,类中属性,类中方法,是否需要初始化,调用方法时能否实现一个类多种对象的模式,多个类之间的调用,方法中参数的调用等。

实例1

小明爱跑步(简单类、对象)

1、需求:

  • 小明体重75.0公斤
  • 小明每次跑步会减肥0.5公斤
  • 小明每次吃东西体重增加1公斤

2、分析:

跑步------>动态行为------>方法
吃东西------>动态行为------>方法
人类:
姓名------>属性
体重------>属性
跑步------>方法
吃   ------>方法
Person:
name
weight
_init__(self,name, weight)
run()

3、代码的实现:

# 小明爱跑步
class Person:
    """人类"""
    def __init__(self, name, weight):
        """初始化人的属性"""
        self.name = name
        self.weight = weight
    def __str__(self):
        """输出对象信息"""
        return "姓名是%s 体重是%.2fkg" % (self.name, self.weight)
    def run(self):
        print("%s 爱跑步,每次跑步减肥0.5kg" % self.name)
        self.weight -= 0.5
    def eat(self):
        print("%s 是一个吃货,每次吃东西增加1kg" % self.name)
self.weight += 1
xiao = Person("小明", 75.0)
print(xiao)
xiao.run()
print(xiao)
xiao.eat()
print(xiao)
print("-"*30)
mei = Person("小美",44.0)
mei.run()
print(mei)
mei.eat()
print(mei)

 

实例2

家具的摆放(涉及类和对象的引用)

1、需求

  • 房子(House)有户型、总面积和家具名称列表

新房子没有任何的家具

  • 家具(Houseltem)有名字和占地面积,其中

席梦思(bed)占地4平米

衣柜(chest)占地2平米

餐桌(table)占地1.5平米

  • 将以上三件家具添加到房子中
  • 打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表

2、分析

House:
house_type
area
item_list
free_area
_init_(self,house_type, area)_str_(self)
add_item(self, item)
HouseItem
name
area
__init__(self,name, area):
__str__(self):

3、代码的实现:

# 摆放家具
class HouseItem:
    """家具类"""
    def __init__(self, name, area):
        """初始化方法"""
        self.name = name
        self.area = area
    def __str__(self):
        """打印家具对象的信息"""
        return "家具名字是:%s 占地面积是%.1f平米" % (self.name, self.area)
# 使用家具类创建对象
bed = HouseItem("席梦思", 4)
print(bed)
chest = HouseItem("衣柜", 2)
print(chest)
table = HouseItem("餐桌", 1.5)
print(table)

class House:
    """房子类"""
    def __init__(self, house_type, area):
        """初始化方法"""
        # 房子户型
        self.house_type = house_type
        # 房子的总面积
        self.area = area
        # 房子的剩余面积,新房子没有占用,剩余面积就是总面积
        self.free_area = area
        # 新房子没有家具,家具列表为空
        self.item_list = []
    def __str__(self):
        """打印房子的信息"""
        return "房子的户型是%s,总面积是:%.2f平米,剩余面积是:%.2f平米,家具名称列表是%s" % (
            self.house_type, self.area, self.free_area, self.item_list)
    def aad_item(self, item):
        """添加家具的方法"""
        # 判断房子的剩余面积和家具的面积大小
        if self.free_area < item.area:
            print("不能再添加家具了")
            return
        else:
            self.free_area -= item.area
            self.item_list.append(item.name)
            print("已经把%s添加的房子中了" % item.name)

# 使用房子类创建对象
big_house = House("大别墅", 60)
print(big_house)
# 向房子中添加席梦思床
big_house.aad_item(bed)
print(big_house)
# 向房子中添加衣柜
big_house.aad_item(chest)
print(big_house)
# 向房子中添加餐桌
big_house.aad_item(table)
print(big_house)

4、输出结果:

家具名字是:席梦思 占地面积是4.0平米
家具名字是:衣柜 
占地面积是2.0平米
家具名字是:餐桌 占地面积是1.5平米
房子的户型是大别墅,总面积是:60.00平米,剩余面积是:60.00平米,家具名称列表是[]
已经把席梦思添加的房子中了房子的户型是大别墅,总面积是:60.00平米,剩余面积是:56.00平米,家具名称列表是['席梦思']
已经把衣柜添加的房子中了房子的户型是大别墅,总面积是:60.00平米,剩余面积是:54.00平米,家具名称列表是['席梦思', '衣柜']
已经把餐桌添加的房子中了房子的户型是大别墅,总面积是:60.00平米,剩余面积是:52.50平米,家具名称列表是['席梦思', '衣柜', '餐桌']

 

实例3

士兵突击(涉及类和对象的相互调用)难

 

1、需求

  • 士兵许三多有一把AK47
  • 士兵可以开火
  • 枪能够发射子弹
  • 枪需要装填子弹—–增加子弹数量

2、分析

枪类:
类型-------->属性
子弹数量----->属性
发射-------->方法
装填子弹----->方法
Gun:
type
bullet_count
__init__(self,type)
shoot()
add_bullet()
士兵------>对象
许三多----->姓名----->属性
AK47----->枪----->属性
开火----->动作------>方法
士兵类:
姓名----->属性
枪------->属性
开火----->方法
Soldire:
name
gun
__init__(self,name,gun=None)
fire(self)

3、代码的实现:

# 士兵突击class Gun:
    """抢类"""
    def __init__(self, type):
        """初始化方法"""
        self.type = type
        # 子弹数量   新抢为0
        self.bullect_count = 0
    def shoot(self):
        """射击方法"""
        # 先判断是否有子弹
        if self.bullect_count <= 0:
            # 无,提示添加子弹,代码不在执行
            print("没有子弹,逗我玩呢?请添加子弹!!")
            return
            # 有,子弹数量减少
        else:
            # 假设射击一次一发
            self.bullect_count -= 1
            print("哔哔哔,,,打子弹啦剩余子弹为%d" % self.bullect_count)
    def add_bullet(self, count):
        """添加子弹方法"""
        self.bullect_count += count

# 士兵
class Sodier:
    """士兵类"""
    def __init__(self, name, gun=None):
        """初始化方法"""
        # 新兵默认没有枪
        self.name = name
        self.gun = gun
    def add(self,new_count):
        """加子弹"""
        # 判断是否有枪
        if self.gun is None:
            print("%s没有枪 请分配枪支!!" % self.name)
            return
        # 没有,提示分配枪支
        # 有,加子弹
        else:
            self.gun.add_bullet(new_count)
    def fire(self):
        """开枪方法"""
        # 判断是否有枪
        if self.gun is None:
            print("%s没有枪 请分配枪支!!" % self.name)
            return
        # 没有,提示分配枪支
        # 有,射击
        else:
            self.gun.shoot()

# # # 用枪类创建对象 !!!!
ak47 = Gun("AK47枪")
# 士兵类创建对象
ren = Sodier("许三多", ak47)
ren.add(50)
ren.fire()
ren.fire()
ren.fire()

4、输出结果:

哔哔哔,,,打子弹啦剩余子弹为49
哔哔哔,,,打子弹啦剩余子弹为48
哔哔哔,,,打子弹啦剩余子弹为47

5、难点突击——给出python内部引用关系图

f044

想必“python中一切事物都是对象”这句话大家都听说过,可见对象在python中的重要地位,所以python中面向对象算是比较难的部分,小编已经头秃了,你呢?

转载请注明:XAMPP中文组官网 » python面向对象实例大全_类和方法的创建与调用

您必须 登录 才能发表评论!