栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python-面向对象基础

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-面向对象基础

目录

1.第一个面向对象

2.新建两个猫对象

3.设置对象属性

4.在外面设置属性的问题

5.初始化方法

6.利用参数设置属性初始值

7.del方法

8.str方法

9.小明爱跑步

10.小明爱跑步扩展

11.摆放家具-家具类

12.摆放家具-房子类

13.摆放家具-添加家具

14.士兵突击-枪类

15.士兵突击-士兵类

16.士兵突击-士兵开火

17.私有属性和方法

1.第一个面向对象
class Cat:
    def eat(self):
        print("小猫爱吃鱼")

    def drink(self):
        print("小猫爱喝水")


# 创建猫对象
tom = Cat()
tom.eat()
tom.drink()

print(tom)
addr = id(tom)
print("%d" % addr)
print("%x" % addr)

2.新建两个猫对象
class Cat:
    def eat(self):
        print("小猫爱吃鱼")

    def drink(self):
        print("小猫爱喝水")


# 创建猫对象
tom = Cat()
tom.eat()
tom.drink()
print(tom)
# 再创建一个猫对象
lazy_cat = Cat()
lazy_cat.eat()
lazy_cat.drink()
print(lazy_cat)
lazy_cat2 = lazy_cat
print(lazy_cat2)

3.设置对象属性
class Cat:
    def eat(self):
        # 哪一个对象调用的方法,self就是哪一个对象的引用
        print("%s 爱吃鱼" % self.name)

    def drink(self):
        print("%s 爱喝水" % self.name)


# 创建猫对象
tom = Cat()
tom.name = "Tom"
tom.eat()
tom.drink()
print(tom)
# 再创建一个猫对象
lazy_cat = Cat()
lazy_cat.name = "大懒猫"
lazy_cat.eat()
lazy_cat.drink()
print(lazy_cat)

4.在外面设置属性的问题
class Cat:
    def eat(self):
        # 哪一个对象调用的方法,self就是哪一个对象的引用
        print("%s 爱吃鱼" % self.name)

    def drink(self):
        print("%s 爱喝水" % self.name)


# 创建猫对象
tom = Cat()
tom.name = "Tom"
tom.eat()
tom.drink()
# tom.name = "Tom"  前面tom.name = "Tom"注释掉,这里调用报错

5.初始化方法
class Cat:
    def __init__(self):
        print("初始化方法")
        self.name = "Tom"
    def eat(self):
        print("%s 爱吃鱼" % self.name)

# 使用类名()创建对象的时候,会自动调用初始化方法 __init__
tom = Cat()
print(tom.name)
tom.eat()

6.利用参数设置属性初始值
class Cat:
    def __init__(self, new_name):
        print("这是一个初始化方法")
        # self.属性名 = 属性的初始值
        # self.name = "Tom"
        self.name = new_name

    def eat(self):
        print("%s 爱吃鱼" % self.name)


# 使用类名()创建对象的时候,会自动调用初始化方法 __init__
tom = Cat("Tom")
print(tom.name)

lazy_cat = Cat("大懒猫")
lazy_cat.eat()

7.del方法
class Cat:
    def __init__(self, new_name):
        self.name = new_name
        print("%s 来了" % self.name)

    def __del__(self):
        print("%s 我去了" % self.name)


tom = Cat("Tom")
print(tom.name)
# del 关键字可以删除一个元素
del tom
print("-" * 50)

8.str方法
class Cat:
    def __init__(self, new_name):
        self.name = new_name
        print("%s 来了" % self.name)

    def __del__(self):
        print("%s 我去了" % self.name)

    def __str__(self):
        # 必须返回一个字符串
        return "我是小猫[%s]" % self.name


tom = Cat("Tom")
print(tom)

9.小明爱跑步
class Person:
    def __init__(self, name, weight):
        # self.属性 = 形参
        self.name = name
        self.weight = weight

    def __str__(self):
        return "我的名字叫%s 体重是%.2f公斤" % (self.name, self.weight)

    def run(self):
        print("%s爱跑步,跑步锻炼身体" % self.name)
        self.weight -= 0.5

    def eat(self):
        print("%s 是吃货,吃完这顿再减肥" % self.name)
        self.weight += 1


xiaoming = Person("小明", 75.0)
xiaoming.run()
xiaoming.eat()
print(xiaoming)

10.小明爱跑步扩展
class Person:
    def __init__(self, name, weight):
        # self.属性 = 形参
        self.name = name
        self.weight = weight

    def __str__(self):
        return "我的名字叫%s 体重是%.2f公斤" % (self.name, self.weight)

    def run(self):
        print("%s爱跑步,跑步锻炼身体" % self.name)
        self.weight -= 0.5

    def eat(self):
        print("%s 是吃货,吃完这顿再减肥" % self.name)
        self.weight += 1


xiaoming = Person("小明", 75.0)
xiaoming.run()
xiaoming.eat()
print(xiaoming)

# 小美爱跑步
xiaomei = Person("小美", 45)
xiaomei.eat()
xiaomei.run()
print(xiaomei)
print(xiaoming)

11.摆放家具-家具类
class HouseItem:
    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        return "[%s] 占地%.2f" % (self.name, self.area)


# 1.创建家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)
print(bed)
print(chest)
print(table)

12.摆放家具-房子类
class HouseItem:
    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        return "[%s] 占地%.2f" % (self.name, self.area)


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):
        # Python能够自动的将一对括号内部的代码连接在一起
        return "户型:%sn总面积:%.2f[剩余:%.2f]n家具:%s" % (self.house_type, self.area, self.free_area, self.item_list)

    def add_item(self,item):
        print("要添加%s" % item)

# 1.创建家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)
print(bed)
print(chest)
print(table)

# 2.创建房子对象
my_home = House("两室一厅",60)
my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)
print(my_home)

13.摆放家具-添加家具
class HouseItem:
    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        return "[%s] 占地%.2f" % (self.name, self.area)


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):
        # Python能够自动的将一对括号内部的代码连接在一起
        return "户型:%sn总面积:%.2f[剩余:%.2f]n家具:%s" % (self.house_type, self.area, self.free_area, self.item_list)

    def add_item(self, item):
        print("要添加%s" % item)
        # 1.判断家具的面积
        if item.area > self.free_area:
            print("%s的面积太大了,无法添加" % item.name)
            return
        # 2.将家具的名称添加到列表中
        self.item_list.append(item.name)
        # 3.计算剩余面积
        self.free_area -= item.area


# 1.创建家具
bed = HouseItem("席梦思", 40)
chest = HouseItem("衣柜", 20)
table = HouseItem("餐桌", 1.5)
print(bed)
print(chest)
print(table)

# 2.创建房子对象
my_home = House("两室一厅", 60)
my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)
print(my_home)

14.士兵突击-枪类
class Gun:
    def __init__(self, model):
        # 1.枪的型号
        self.model = model
        # 2.子弹的数量
        self.bullet_count = 0

    def add_bullet(self, count):
        self.bullet_count += count

    def shoot(self):
        # 1.判断子弹数量
        if self.bullet_count <= 0:
            print("[%s]没有子弹了。。。" % self.model)
            return
        # 2.发射子弹 -1
        self.bullet_count -= 1
        # 3.提示发射信息
        print("[%s]突突突。。。[%d]" % (self.model, self.bullet_count))


# 1.创建枪对象
ak47 = Gun("AK47")
ak47.add_bullet(50)
ak47.shoot()

15.士兵突击-士兵类
class Gun:
    def __init__(self, model):
        # 1.枪的型号
        self.model = model
        # 2.子弹的数量
        self.bullet_count = 0

    def add_bullet(self, count):
        self.bullet_count += count

    def shoot(self):
        # 1.判断子弹数量
        if self.bullet_count <= 0:
            print("[%s]没有子弹了。。。" % self.model)
            return
        # 2.发射子弹 -1
        self.bullet_count -= 1
        # 3.提示发射信息
        print("[%s]突突突。。。[%d]" % (self.model, self.bullet_count))


class Soldier:
    def __init__(self, name):
        # 1.姓名
        self.name = name
        # 2.枪 - 新兵没有枪
        self.gun = None

    def fire(self):
        # 1.判断士兵是否有枪
        if self.gun == None:
            print("[%s] 还没有枪。。。" % self.name)
            return

        # 2.高喊口号
        print("冲啊。。。[%s]" % self.name)
        # 3.让枪装填子弹
        self.gun.add_bullet(50)
        # 4.让枪发射子弹
        self.gun.shoot()


# 1.创建枪对象
ak47 = Gun("AK47")

# 2.创建许三多
xusanduo = Soldier("许三多")
xusanduo.gun = ak47
xusanduo.fire()
print(xusanduo.gun)

16.士兵突击-士兵开火
class Gun:
    def __init__(self, model):
        # 1.枪的型号
        self.model = model
        # 2.子弹的数量
        self.bullet_count = 0

    def add_bullet(self, count):
        self.bullet_count += count

    def shoot(self):
        # 1.判断子弹数量
        if self.bullet_count <= 0:
            print("[%s]没有子弹了。。。" % self.model)
            return
        # 2.发射子弹 -1
        self.bullet_count -= 1
        # 3.提示发射信息
        print("[%s]突突突。。。[%d]" % (self.model, self.bullet_count))


class Soldier:
    def __init__(self, name):
        # 1.姓名
        self.name = name
        # 2.枪 - 新兵没有枪
        self.gun = None

    def fire(self):
        # 1.判断士兵是否有枪
        # if self.gun == None:
        if self.gun is None:
            print("[%s] 还没有枪。。。" % self.name)
            return

        # 2.高喊口号
        print("冲啊。。。[%s]" % self.name)
        # 3.让枪装填子弹
        self.gun.add_bullet(50)
        # 4.让枪发射子弹
        self.gun.shoot()


# 1.创建枪对象
ak47 = Gun("AK47")

# 2.创建许三多
xusanduo = Soldier("许三多")
# xusanduo.gun = ak47
xusanduo.fire()
print(xusanduo.gun)

17.私有属性和方法
class Women:
    def __init__(self,name):
        self.name = name
        self.__age = 18 # 定义私有属性和私有方法  在名字前添加两个下划线

    def __secret(self):
        # 在对象的方法内部,是可以访问对象的私有属性的
        print("%s 的年龄是 %d" % (self.name,self.__age))

xiaofang = Women("小芳")
# 私有属性在外界不能够被直接访问   处理方式:在名称前面加上 _类名 => _类名__名称
# print(xiaofang.__age)

print(xiaofang._Women__age)
# 私有方法在外界不能够被直接调用   处理方式:在名称前面加上 _类名 => _类名__名称
# xiaofang.__secret()
xiaofang._Women__secret()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/928468.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号