IT在线课程

Python基础知识7 20190425

2019-04-26  本文已影响1人  大智大智

9.面向对象 (OOP)

>>> s = [1,2]
>>> s
[1, 2]
>>> dir(s)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>>

# 需求:小猫爱吃鱼,小猫爱喝水
class Cat:
    def eat(self):
        print("小猫爱吃鱼儿")
    def drink(self):
        print("小猫爱喝水")
# 实例化对象
tom = Cat()
tom.eat()
tom.drink()
print(tom)
<__main__.Cat object at 0x000001CEDA2B2B70>
# 需求:小猫爱吃鱼,小猫爱喝水
class Cat:

    def eat(self):
        print("%s爱吃鱼儿" % self.name)
    def drink(self):
        print("小猫爱喝水")
# 实例化对象
tom = Cat()
tom.name = "tome"
tom.eat()
tom.drink()
print(tom)
tome爱吃鱼儿
小猫爱喝水
class Cat:
    def __init__(self):
        print("this is a init way Sun easy")
        self.name = "Tom"

tom = Cat()  # 自动调用了初始化方法
print(tom.name)
class Cat:
    def __init__(self, new_name):
        print("this is a init way Sun easy")
        self.name = new_name
    def eat(self):
        print("%s like eat fish"%self.name)

tom = Cat("Tome")  # 自动调用了初始化方法
print(tom.name)
tom.eat()

当对象销毁的时候,系统会对其自动销毁,但是可以对其改造。del()可以删除对象

使用print打印查看自定义内容可以使用该函数

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, hose_type, area):
        self.hose_type = hose_type
        self.area = area
        self.free_area = area
        self.item_list = []

    def __str__(self):
        return ("户型是:%s\n 总面积是:%.2f[剩余%.2f]\n家具有:%s" %
                ((self.hose_type, self.area, self.free_area, self.item_list)))
    def add_item(self, item):
        # 1.判断家具面积是否小于房间面积
        print("要添加:%s" %item)
        if item.area > self.free_area:
            print("家具太大,放不下")
            return
        # 2.将家具名称添加至列表
        self.item_list.append(item.name)
        # 3.计算剩余面积
        self.free_area = self.free_area - item.area

bed = HouseItem("席梦思", 63)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)
print(bed)
print(chest)
print(table)
print()


my_home = House("两室一厅", 60)
my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)
print(my_home)

运行结果:

(席梦思) 占地63.00 
(衣柜) 占地2.00 
(餐桌) 占地1.50 

要添加:(席梦思) 占地63.00 
家具太大,放不下
要添加:(衣柜) 占地2.00 
要添加:(餐桌) 占地1.50 
户型是:两室一厅
 总面积是:60.00[剩余56.50]
家具有:['衣柜', '餐桌']
class Gun:
    def __init__(self, modle):
        self.model = modle
        self.bullet_count = 0

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

    def shoot(self):
        if self.bullet_count <= 0:
            print("没有子弹了。")
            return
        self.bullet_count -= 1
        print("%s 突突突》》》》》》[%d]"%(self.model, self.bullet_count))

class Soldier:
    def __init__(self, name):
        self.gun = None
        self.name = name
    def fire(self):
        # 1.判断是否有枪
        if self.gun == None:
            print("没有枪")
        # 2.高喊口号
        print("冲啊")
        # 3. 发射子弹
        self.gun.add_bullet(50)
        self.gun.shoot()

ak47 = Gun("ak47")

xusanduo = Soldier("许三多")
xusanduo.gun = ak47
xusanduo.fire()

运行结果

冲啊
ak47 突突突》》》》》》[49]
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()  # 对象方法内部可以直接使用
18
小芳 的年龄是 18

class Dog(Animals): # 狗类继承自动物类
   print()
class Tools(object):
    count = 0   # 类属性是和类相关的机制
    @classmethod
    def show_to_count(cls):
        print("工具对象数目%d"% cls.count)
    def __init__(self, name):
        self.name = name
        Tools.count += 1


tool1 = Tools("斧头")
tool2 = Tools("水桶")
tool3 = Tools("马桶")
print(tool1)
print(tool2)
print(Tools.count)
print(tool2.count)
print(tool1.count)

# 调用类方法
Tools.show_to_count()

运行结果

<__main__.Tools object at 0x000001E0633B2D30>
<__main__.Tools object at 0x000001E0633E2048>
3
3
3
工具对象数目3
class Dog(object):
    @staticmethod
    def run():
        print("dog can run")
Dog.run()

-静态方法:显示游戏帮助信息

类方法:显示历史最高分

实例方法:开启当前玩家游戏

class Game(object):
    # 类属性:历史最高分
    top_score = 0
    def __init__(self,player_name):
        self.player_name = player_name

    @staticmethod
    def show_help():
        print("help message")

    @classmethod
    def show_top_score(cls):
        print("history score :%d" %cls.top_score)

    def start_game(self):
        print("%s game start" %self.player_name)

        # 1.查看帮助信息
Game.show_help()
        # 2.查看历史最高峰
Game.show_top_score()
        # 3.创建对象
game = Game("小明")
game.start_game()
help message
history score :0
小明 game start
上一篇 下一篇

猜你喜欢

热点阅读