初识面向对象

  • 初识类
  • 静态类
  • 类的作用
  • 对象之间交互

一 如何创建一个类:(具有相同属性和方法的同一类事物)

class Data:  # 注意类名首字母要大些(规定) 关键字 class
   def __init__(self,a) # 这是一个内置方法,self是一块内存空间 后面可以跟参数按顺序)
  delf.a=a
dog=Data('咬人') # 类名加括号就相当于执行类中的__init__方法

二 看例子

class Data:
    country = 'china'  # 类的属性  ,静态属性(所有这个类都共同的属性)
    def __init__(self,a):
        self.name=a  # 此时这里的self.name=a就是以一个字典的键值对的形式存放的 {'name': '张三'}
        print(self)   # 此时打印的跟print(dog)的是一个内存地址
dog=Data('张三')

print(dog.name) # 这是查看属性
print(dog)  # 此时打印的跟print(self)的是一个内存地址
print(dog.__dict__) # 查看类中所有的属性 {'name': '张三'} 字典的形式
dog.sex=''  # 增加属性
print(dog.sex)
print(dog.__dict__)  #{'name': '张三', 'sex': ''}
# del dog.sex  # 删除属性
# print(dog.sex)  # Data' object has no attribute 'sex'   对象中没有该属性
dog.name='李四' #  修改属性
print(dog.name)  # 李四  

小总结:

类名作用:
实例化对象
-调用类中的静态属性 (也可以进行操作)
实例化的过程:
1 创建一个属于对象的空间
2 将这个空间的地址和参数传递给__init__方法
3执行init方法
4 将对象的空间返回给对象名
静态属性: 所有这个类都有的共同属性

对象能做什么;
调用对象的属性 (对象名点属性名)
调用对象中的方法(动态方法)  (对象名点方法名或者类名点方法名推荐使用前者,就跟一个函数一样,不过返回值取得时候
print(对象名点方法名(),也可以传参但他会默认自带一个self,次self可以调用其本身的属性,其后也可以传其他对象用于相互交互) 什么是对象的属性: 存储在实例化对象之后的空间里的属性都叫对象的属性,每一次对象都有自己独立的空间, 每一个对象都有自己的属性值 什么是动态属性: 定义在类中的函数,自带一个self,就是调用这个方法的对象本身

三 相互交互

class Person:
    def __init__(self,name,sex,hp,mp,ad):
        # print(self)
        self.name=name
        self.sex=sex
        self.hp=hp
        self.mp=mp
        self.ad=ad
    def attack(self,dog):  # self默认是自己本身的,后面可以传其他的对象名
        # print(self)
        print('%s攻击了%s' % (self.name,dog.name))
        dog.hp-=self.ad
class Dog:
    def __init__(self,name,kind,hp,ad):
        self.name=name
        self.kind=kind
        self.hp=hp
        self.ad=ad
    def bite(self,men):
        print('%s咬了%s'% (self.name,men.name))
        men.hp-=self.ad

alex=Person('alex',None,10,10,0.1)
haha=Dog('haha','jinmao ',6666,663)
# print(alex.__dict__['name']) # 这样也可以查看属性
# print(alex.name) # 查看属性
# alex.name='alex_sb'  # 修改属性
# alex.eat=''  # 添加属性
# print(alex.eat)
# del alex.eat
# print(alex.eat) #   删除属性 'Person' object has no attribute 'eat' 没有属性
print(alex.name)
# print(haha.hp)   # 咬之前的血量
# alex.attack(haha)  # 给函数传haha
# print(haha.hp)   # 减完之后的血量
 # 狗咬人
print(alex.hp)
haha.bite(alex)
print(alex.hp)
原文地址:https://www.cnblogs.com/systemsystem/p/9991944.html