# 定义一个类
class Person:
mind = '思想' # 静态变量,静态字段
animal = '高级动物'
def __init__(self,name,age): # 构造方法
self.name = name
self.age = age
def work(self): #方法 动态变量
print('都会工作')
# 1, 查询类中的全部内容
print(Person.__dict__)
# 可以使用del来删除类中的比字段
del Person.mind
# 实例化对象
obj1 = Person('TOM',15)
# 实例化的对象可以调用类或父类中的方法以及字段
print(obj1.animal)
obj1.work()
# 比如我们有一个需求
# (1)
# 创建一个
# Game_role的类.
# (2)
# 构造方法中给对象封装name, ad(攻击力), hp(血量).三个属性.
# (3)
# 创建一个attack方法, 此方法是实例化两个对象, 互相攻击的功能:
# 例: 实例化一个对象
# 盖伦, ad为10, hp为100
# 实例化另个一个对象
# 剑豪
# ad为20, hp为80
# 盖伦通过attack方法攻击剑豪, 此方法要完成
# '谁攻击谁,谁掉了多少血, 还剩多少血'
# 的提示功能.
class Game_role:
def __init__(self,name,ad,hp):
self.name = name
self.ad = ad
self.hp = hp
def attack(self,target):
target.hp = target.hp - self.ad
print('{0}攻击了{1},{1}掉了{2}血,还剩{3}血'.format(self.name,target.name,self.ad,target.hp,))
gailun = Game_role('盖伦',10,100)
jianhao = Game_role('剑豪',20,80)
gailun.attack(jianhao)
# python在实例化的过程中,首先在内存中开辟空间,将空间也就是self传给构造函数,而实例对象则指向这一块空间
# 实例化对象在执行方法时会将这处空间默认传给方法
# (1)
# 创建一个
# Game_role的类.
# (2)
# 构造方法中给对象封装name, ad(攻击力), hp(血量).三个属性.
# (3)
# 创建一个attack方法, 此方法是实例化两个对象, 互相攻击的功能:
# 例: 实例化一个对象
# 盖伦, ad为10, hp为100
# 实例化另个一个对象
# 剑豪
# ad为20, hp为80
# 盖伦通过attack方法攻击剑豪, 此方法要完成
# '谁攻击谁,谁掉了多少血, 还剩多少血'
# 的提示功能.
# 我们想给人物添加武器
# 例:盖伦使用大宝剑攻击了剑豪......
# 那么就需要一个武器类,一个人物类
class Game_role:
def __init__(self,name,ad,hp):
self.name = name
self.ad = ad
self.hp = hp
# 添加一个装备武器的方法
def armament(self,wea):
# 将一个实例赋值给另一个实例属性的过程又叫做组合
self.wea = wea
class Weapon:
def __init__(self,name,ad):
self.name = name
self.ad = ad
def fight(self,o1,o2):
o2.hp = o2.hp - self.ad - o1.ad
print('{0}使用{2}攻击了{1},{1}掉了{3}血还剩{4}血'.format(o1.name,o2.name,self.name,self.ad + o1.ad,o2.hp))
# 实例化一把武器
sword = Weapon('宝剑',20)
# 创建两个英雄
gl = Game_role('盖伦',10,100)
jh = Game_role('剑豪',20,80)
gl.armament(sword)
gl.wea.fight(gl,jh)
# result:盖伦使用宝剑攻击了剑豪,剑豪掉了30血还剩50血
# 例:定义一个类计算圆环面积和周长
# 首先我们先定义一个类计算单个圆的面积和周长
from math import pi
class Circle:
def __init__(self,r):
self.r = r
def area(self):
return round(self.r ** 2 *pi , 2)
def perimeter(self):
return round(self.r * 2 * pi , 2)
class Ring:
def __init__(self,r1,r2):
# 这里同样使用了组合的思想
self.r1 = Circle(r1)
self.r2 = Circle(r2)
def area(self):
return round(self.r1.area() - self.r2.area())
def perimeter(self):
return round(self.r1.perimeter() + self.r2.perimeter())
y1 = Ring(5,4)
print(y1.area())
# result:28