一、举例讲解
class Person:
country = 'China' #创造了一个只要是这个类就一定有的属性
#类属性 静态属性
def __init__(person,*args):#初始化方法,self是对象,是一个必须传的参数
#self就是一个可以储存很多属性的大字典
person.name = args[0]
person.blood = args[1]
person.attack = args[2]
person.sex = args[3]
def walk(self,n): #方法,一般情况下必须传self参数,且必须写在第一个,
# 后面还可以传其他参数是自由的
print('%s走走走,走了%s步'%(self.name,n))
print(Person.country) #类名 可以查看类中属性,不需要实例化就可以查看
#China
people_1 = Person('大白',1000,50,'woman') #类名还可以实例化对象 #实例化
print(people_1.__dict__)#查看所有属性
#{'name': '大白', 'blood': 1000, 'attack': 50, 'sex': 'woman'}
print(people_1.name) #查看属性值
#大白
Person.walk(people_1,5) #调用方法:类名.方法名(对象名)
people_1.walk(5)
#大白走走走,走了5步
print(Person.__dict__['country'])
print(people_1.__dict__['name'])
# China
# 大白
people_1.__dict__['name'] = 'dabai'
people_1.name = "dabai"
print(people_1.__dict__)
#{'name': 'dabai', 'blood': 1000, 'attack': 50, 'sex': 'woman'}
people_1.age = 20
print(people_1.__dict__)
#{'name': 'dabai', 'blood': 1000, 'attack': 50, 'sex': 'woman', 'age': 20}
#过程:
# 类名()首先会创作出一个对象,创建了一个self变量
# 调用init方法,类名括号里的参数会被这里接受
# 执行init方法
# 返回self
#对象能做的事:
#查看属性
#调用方法
#类名能做的事:
# 实例化
# 调用方法:只不过要自己传递self参数
# 调用类中的属性,也就是调用静态属性
#__dict__对于类中的名字只能看 不能操作
二、人狗大战升级版
#人狗大战
class People:
def __init__(self,name,blood,hp,sex):
self.name = name
self.blood = blood
self.hp = hp
self.sex = sex
self.money = 0
def attack(self,dog,weapon):
dog.blood -= self.hp
print('{}用{}打了{},{}掉了{}血
{}还剩{}滴血'.format(self.name,weapon.name,dog.name, dog.name,
self.hp, dog.name,dog.blood))
def get_weapon(self,weapon):
you_inside_money = int(input('充值金额:'))
self.money += you_inside_money
print('您目前金额:%s'%self.money)
if self.money >= weapon.price:
self.money -= weapon.price
self.blood += weapon.blood
self.hp += weapon.hp
print('购买成功!您金额还剩:%s'%self.money)
else:
print("金额不足!")
class Dog:
def __init__(self,name,blood,hp,kind):
self.name = name
self.blood = blood
self.hp = hp
self.kind = kind
def bite(self,people):
self.blood -= people.hp
print('{}咬了{},{}掉了{}血
{}还剩{}滴血'.format(self.name, people.name, people.name,
self.hp, people.name,people.blood))
class weapon:
def __init__(self,name,blood,hp,price):
self.name = name
self.blood = blood
self.hp = hp
self.price = price
people_1 = People('大白',1000,10,'woman')
people_2 =People('哪吒',500,20,'man')
dog_1 = Dog('二哈',100,50,'二哈')
dog_2 = Dog('哮天犬',400,100,'None')
print('{}
{}
{}
{}
'.format(people_1.__dict__,people_2.__dict__,dog_1.__dict__,dog_2.__dict__))
bar = weapon('打狗棒',200,50,1000)
people_1.get_weapon(bar)
people_1.attack(dog_1,bar)
dog_2.bite(people_2)
# {'name': '大白', 'blood': 1000, 'hp': 10, 'sex': 'woman', 'money': 0}
# {'name': '哪吒', 'blood': 500, 'hp': 20, 'sex': 'man', 'money': 0}
# {'name': '二哈', 'blood': 100, 'hp': 50, 'kind': '二哈'}
# {'name': '哮天犬', 'blood': 400, 'hp': 100, 'kind': 'None'}
#
# 充值金额:10000
# 您目前金额:10000
# 购买成功!您金额还剩:9000
# 大白用打狗棒打了二哈,二哈掉了60血
# 二哈还剩40滴血
# 哮天犬咬了哪吒,哪吒掉了100血
# 哪吒还剩500滴血