交互,人和狗的互相残杀
class Person:
sole = 'person'
def __init__(self,name,age,hp,ad):
self.age = age
self.hp = hp
self.name = name
self.ad = ad
def attack(self,c):
self.hp -= c.ad
print('%s攻击了%s,%s掉了%s点血'%(self.name,c.name,c.name,self.ad))
class Dog:
sole = 'dog'
def __init__(self,name,age,hp,ad):
self.age = age
self.hp = hp
self.name = name
self.ad = ad
def bite(self,a):
self.hp -= a.ad
print('%s咬了%s,%s掉了%s点血'%(self.name,a.name,a.name,self.ad))
alex = Person('sb',41,12,23)
wusi = Dog('2b',11,52,13)
alex.attack(wusi)
wusi.bite(alex)
类中的方法的传参与调用
class Person:
role = 'person' # 静态属性
def __init__(self,name,sex,hp,ad):
self.name = name # 对象属性 属性
self.sex = sex
self.hp = hp
self.ad = ad
def attack(self):
self.hobby = 'girl'
print('%s发起了一次攻击'%self.name)
alex = Person('a_sb','不详',1,5)
alex.attack() # Person.attack(alex)
alex.age = 81
# alex --> Person
# Person实例化了alex
print(alex.__dict__)
alex.name #alex 指向我自己的内存空间 在自己的内存空间里找到name
alex.attack #alex 先找自己的内存空间 再找到类对象指针 再根据类对象指针找到类 再通过类找到attack
对象的内存空间里: 只存储对象的属性,而不存储方法和静态属性
方法和静态属性都存储在类的内存空间中
为了节省内存,让多个对象去共享类中的资源
写一个类 完成一个功能 : 可以统计这个类有几个对象
class Lei:
count=0
def __init__(self,name):
Lei.count+=1
a=Lei('a')
b=Lei('b')
c=Lei('c')
print(Lei.count)
# 对象属性是独有的,静态属性和方法是共享的
# 对象使用名字:先找自己内存空间中的,再找类的内存空间中的
# 类名.静态变量名 :对于静态属性的修改,应该使用类名直接修改