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()
练习二:游戏人生程序
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
由结果分析:对象是逐个执行的。