面向对象

这里写图片描述
class是关键字,表示类
创建对象,类名称后加括号即可
test 1:
内容转载Crossin的编程教室

class MyClass:  
    name='Sam'  #类变量name,值设置为’Sam'

    def SayHi(self):   #类方法SayHi,类方法和我们之前定义的函数区别在于,第一个参数必须为self
        print('Hello %s' % self.name)

mc=MyClass()  #定义一个对象mc
print (mc.name)  #调用类变量的方法是“对象.变量名”
mc.name='Lily'
mc.SayHi()

2)
假设我们有一辆汽车,我们知道它的速度(60km/h),以及A、B两地的距离(100km)。要算出开着这辆车从A地到B地花费的时间。(很像小学数学题是吧?)

class Car:  #定义类
    speed=1
    def drive(self,distance):  
        time=distance/ self.speed
        print(time)

car1=Car()  #定义一个对象car1
car1.speed=60.0
car1.drive(100.0)
car1.drive(200.0)

car2=Car()   #定义一个对象car2
car2.speed=150.0
car2.drive(100.0)
car2.drive(200.0)

输出为:

runfile('C:/Users/n/Documents/untitled5.py', wdir='C:/Users/n/Documents')
1.6666666666666667
3.3333333333333335
0.6666666666666666
1.3333333333333333

3)通过self间接调用被封装的内容(转自:
[Python 面向对象(初级篇](http://python.jobbole.com/82023/)


执行类中的方法时,需要通过self间接调用被封装的内容
'''
self 是一个形式参数

当执行 obj1 = Foo(‘wupeiqi’, 18 ) 时,self 等于 obj1

当执行 obj2 = Foo(‘alex’, 78 ) 时,self 等于 obj2
'''
#创建类
class Foo:
     def __init__(self,name,age):
         self.name=name
         self.age=age

     def detail(self):  #indent是缩进的意思
        print(self.name)
        print(self.age)


obj1=Foo('wupeiqi',18)         
obj1.detail()
'''
# Python默认会将obj1传给self参数,即:obj1.detail(obj1),所以,此时方法内部的 
self = obj1,即:self.name 是 wupeiqi ;self.age 是 18
'''

obj2=Foo('alex',73)
obj2.detail()

Python 面向对象(初级篇)
4)

练习二:游戏人生程序

1、创建三个游戏人物,分别是:

苍井井,女,18,初始战斗力1000
东尼木木,男,20,初始战斗力1800
波多多,女,19,初始战斗力2500
2、游戏场景,分别:

草丛战斗,消耗200战斗力
自我修炼,增长100战斗力
多人游戏,消耗500战斗力
# -*- coding:utf-8 -*-

# #####################  定义实现功能的类  #####################

class Person:

    def __init__(self, na, gen, age, fig):
        self.name = na
        self.gender = gen
        self.age = age
        self.fight =fig

    def grassland(self):
        """注释:草丛战斗,消耗200战斗力"""

        self.fight = self.fight - 200

    def practice(self):
        """注释:自我修炼,增长100战斗力"""

        self.fight = self.fight + 200

    def incest(self):
        """注释:多人游戏,消耗500战斗力"""

        self.fight = self.fight - 500

    def detail(self):
        """注释:当前对象的详细情况"""

        temp = "姓名:%s ; 性别:%s ; 年龄:%s ; 战斗力:%s"  % (self.name, self.gender, self.age, self.fight)
        print (temp)

# #####################  开始游戏  #####################

cang = Person('苍井井', '女', 18, 1000)    # 创建苍井井角色
dong = Person('东尼木木', '男', 20, 1800)  # 创建东尼木木角色
bo = Person('波多多', '女', 19, 2500)      # 创建波多多角色

cang.incest() #苍井空参加一次多人游戏
dong.practice()#东尼木木自我修炼了一次
bo.grassland() #波多多参加一次草丛战斗

#输出当前所有人的详细情况
cang.detail()
dong.detail()
bo.detail()

cang.incest() #苍井空又参加一次多人游戏
dong.incest() #东尼木木也参加了一个多人游戏
bo.practice() #波多多自我修炼了一次

#输出当前所有人的详细情况
cang.detail()
dong.detail()
bo.detail()
输出结果:
姓名:苍井井 ; 性别:女 ; 年龄:18 ; 战斗力:500
姓名:东尼木木 ; 性别:男 ; 年龄:20 ; 战斗力:2000
姓名:波多多 ; 性别:女 ; 年龄:19 ; 战斗力:2300

由结果分析:对象是逐个执行的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值