python基础07

我们通过一个类的实例来看类是怎么回事

class Animals():
    def est(self):
        print('chi')

    def sleep(self):
        print('sleep')

dog = Animals()  # 创建对象
dog.sleep()    # 调用行为

# 也可以给dog增加属性   但是不推荐
dog.name='11'
print(dog.name)   

  • class 来定义类,def来定义函数
  • dog = Animals()创建一个动物的实例
  • dog.sleep()通过句号表示法来调用类中定义的方法

运行结果:
在这里插入图片描述
看个复杂点的例子:

class Dog():
    def __init__(self, name, age):     # 构造方法、初始化方法
        """初始化属性name和age"""
        self.name = name     
        self.age = age

    def set(self):
        """模拟小狗被命令史蹲下"""
        print(self.name.title() + "is now sitting")

    def roll_over(self):
        """模拟小狗被命令时打滚"""
        print(self.name.title() + "rolled over!")


my_dog = Dog('willie', 6)
print(my_dog.name.title())
my_dog.set()
  • 在python中,首字母大写的名称表示类 首字母小写或者首字母小写加下划线表示函数

  • 方法__init__()是一种特殊的方法每当你根据Dog类创建新实例时,python在创建对方的时候自动运行他。在这个方法的定义中形参self必不可少,并且必须位于其他形参的前面。python会自动调用__init__()方法来创建Dog实例时,将自动传入实参self。每个与类相关联的方法调用都会自动传递实参self

  • def __init__(self, name, age):
    Dog类中有三个形参self和name和age
    其中self不需要传递值
    my_dog = Dog('willie', 6)
    形参name对应的实参是‘willie’
    形参age对应的实参是6

  • self.name = name
    获取形参name中的值,并将其储存在变量name中,然后该变量被关联到当前创建的实例中

  • my_dog = Dog('willie', 6)
    这是创建一个特定小狗的实例,并且使用我们提供的值来设置属性name和age

  • print(my_dog.name.title())
    访问属性。用句号表示法,句号表示法在python很常用

  • my_dog.set()
    调用方法。可以使用句号表示法来调用Dog类中定义的任何方法

运行结果:
在这里插入图片描述
练习写一个房子类:

class Home():
    def __init__(self, home_area, home_type):
        self.home_area = home_area
        self.home_type = home_type

    def in_home(self, num):
        print('入住了%d人' % num)

    def desc(self):
        print('房间{}平米,类型{}'.format(self.home_area, self.home_type))


home = Home(180, '三室一厅')
home.in_home(3)
home.desc()

在这里插入图片描述

练习写个士兵突击:

class Gun():
    def __init__(self, name):
        self.name = name
        self.num = 0

    def add_bullet(self, num):
        self.num += num

    def fire(self, diren):
        self.num = self.num - 1
        diren.kill()
        print('向%s开火,还剩%d发子弹' % (diren.name, self.num))


class Soldier():
    def __init__(self, name, gun=None):
        self.name = name
        self.gun = gun
        self.shengmingzhi = 100

    def open_fire(self, diren):
        if self.gun is not None:
            self.gun.fire(diren)
        else:
            print('没有枪')

    def kill(self):
        self.shengmingzhi = self.shengmingzhi - 10

        if self.shengmingzhi <= 0:
            print('挂了')
        else:
            print('还剩%d' % self.shengmingzhi)


ak47 = Gun('ak47')
ak47.add_bullet(50)
li = Soldier('李大哥', ak47)
diren = Soldier('敌人')

li.open_fire(diren)
li.open_fire(diren)
li.open_fire(diren)
li.open_fire(diren)

在这里插入图片描述

介绍一个__str__方法

class Person():
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return self.name

    def eat(self):
        print('吃饭')

    def sleep(self):
        print('睡觉')


xm = Person('小明', 12)
print(xm)
print(xm.name)
  • __str__必须有返回值,并且只能返回字符串
  • 当调用实例本身时返回填写在return中的内容

运行结果:
在这里插入图片描述

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值