zoukankan      html  css  js  c++  java
  • 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)
    # 对象属性是独有的,静态属性和方法是共享的
    # 对象使用名字:先找自己内存空间中的,再找类的内存空间中的
    # 类名.静态变量名 :对于静态属性的修改,应该使用类名直接修改
  • 相关阅读:
    【区间DP&&记忆化搜索】乘法游戏
    洛谷P1608路径统计
    2021省选游记
    涂色计划P4170
    01迷宫及路径记录(DFS&&BFS)
    [YBTOJ递推算法强化训练4]序列个数
    C++关于string 的优先队列以及重载运算符
    浅谈C++STL容器
    集合的划分
    图的表示
  • 原文地址:https://www.cnblogs.com/Mr-Murray/p/8797989.html
Copyright © 2011-2022 走看看