初识面向对象

Posted systemsystem

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识面向对象相关的知识,希望对你有一定的参考价值。

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

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

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)

 





以上是关于初识面向对象的主要内容,如果未能解决你的问题,请参考以下文章

Python -- 面向对象:初识

面向对象初识

初识面向对象

VSCode自定义代码片段——JS中的面向对象编程

面向对象初识

VSCode自定义代码片段9——JS中的面向对象编程