0411 面向对象 命名空间 作用域

交互,人和狗的互相残杀

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)
# 对象属性是独有的,静态属性和方法是共享的
# 对象使用名字:先找自己内存空间中的,再找类的内存空间中的
# 类名.静态变量名 :对于静态属性的修改,应该使用类名直接修改

 

posted @ 2018-04-11 19:32  Murray穆  阅读(168)  评论(0编辑  收藏  举报