首页 > 其他 > 详细

初识面向对象

时间:2018-11-20 22:08:03      阅读:182      评论:0      收藏:0      [点我收藏+]
  • 初识类
  • 静态类
  • 类的作用
  • 对象之间交互

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!