美文网首页
面向对象

面向对象

作者: 木子李007 | 来源:发表于2020-11-14 14:28 被阅读0次

一、class

  • class用来定义一个类(一个共同点的模型):
    1. 属性:

      • 函数:方法,人们喜欢把类中的函数叫方法
      • 变量:字符串,列表,元组,字典,集合
    2. 类:一个属性集合

    3. 实例:在内存中通过模型实例化创建的数据

      • 实例是一个容器一样,包含了所有类里的属性,而且是实际存在于内存中的
    4. 实例化:通过类名括号的方式

      class A:
          pass
      a = A() # 实例化
      
  • 面向对象的语法中,我们可以通过xxx.xxxx来获取到对应的属性
    mylist = [1,2,3,4,5]
    mylist.remove(3)
    print(mylist)   # [1,2,4,5]
    

例:

class User:   # 一个角色的类
   # self是一个将我们函数声明为单独的一个实例工作的参数
   # 每一个加了self的函数或者变量 都只能为自己的实例来工作
       # 在实例调用的时候,当前实例都会覆盖掉self
   # self用来指向当前工作实例
   # self是约定俗称的
   def __init__(self,name,sex,age):    # __init__是一个特殊内置函数
       self.name = name
       self.sex = sex
       self.age = age
       # 0:女人
       # 1:男人

   def run(self):
       print('%s的年龄是:%d' %(self.name,self.age))
c1 = User('小明',1,25)
   #c1.__init__(c1,'小明',1,25)
c2 = User('小红',0,28)
   #c2.__init__(c2,'小红',0,28)
c3 = User('小兰',1,18)
   #c3.__init__(c3,'小兰',1,18)

print(c1.name)  # 小明
print(c2.name)  # 小红
print(c3.name)  # 小兰

c1.run()  # 小明的年龄是:25
c2.run()  # 小红的年龄是:28
c3.run()  # 小兰的年龄是:18
  • Python中处处皆对象

二、 init

init函数为每一个实例进行数据的初始化工作
初始化函数 就是为了给实例创建属于自己的变量
init函数在实例化过程中自动调用,不需要你手动的来调用
init函数不允许有返回值,一旦有返回值,那么就报错啦
TypeError: init() should return None, not 'int'
类型错误:改函数必须返回一个None,而不是int

三、self

  1. self是一个将我们函数声明为单独的一个实例工作的参数
  2. 每一个加了self的函数或者变量 都只能为自己的实例来工作
  3. 在实例调用的时候,当前实例都会覆盖掉self
  4. self用来指向当前工作实例。self是约定俗称的命名,你也可以叫别的,但是一般都叫self

四、面向对象属性探究

cls用来指向类,self用来指向实例
  • 类的普通函数
# 类的普通函数只能被类所使用
    # 不能访问类变量及实例变量
class A:
    place = '地球'
    def __init__(self):
        self.name = '人'

    # 类的普通函数
    def func():  # 函数没有任何参数
        print('哈哈哈哈')
        print(place)  #普通函数不能访问类变量
        print(name)   #普通函数不能访问实例变量

a = A() # func

a.func() #实例调用函数!实例在调用函数的时候,首先会把自己作为第一个参数传递
    # TypeError: func() takes 0 positional arguments but 1 was given

A.func()  #哈哈哈哈
  • 类的高级函数
# 类的高级函数
   实例和类均可访问
   可以访问类的变量
   不可以访问实例的属性
class A:
    place = '地球'
    def __init__(self):
        self.name = '人'
        # 实例的东西只有实例能访问

    # 类的高级函数
    @classmethod  # 默认的必须要有一个参数
    # cls参数用来指向当前的类!
    def g_func(cls):
        print(cls.place)

a = A()
print(a.name)  # 实例的东西只有实例能访问
a.g_func()
A.g_func()
  • 类的静态函数
# 类的静态方法
#   首先无法访问类的变量,没有指向当前使用类的指针
#   实例和类均可调用
#   不可以访问属于实例的属性
class A:
    @staticmethod  #类似与类的普通函数
    # 不需要cls这样的额外参数
    def s_func():
        print('绘声绘色')
a = A()
a.s_func()
A.s_func()

** 实例之间可以通过静态方法@staticmethod 以及高级方法@classmethod 进行数据通信

相关文章

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • 总结.Net基础知识——献给即将入坑的同行们(一期)

    什么是面向对象 面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP; 通俗...

  • 面向对象基础

    面向对象编程包括: 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程实现(OOP) 面向对象思想...

  • 20-OOP类与对象

    面向对象 Object Oriented 学习面向对象:XXOO 面向对象的学习: 面向过程和面向对象的区别: 面...

  • JavaScript面向对象核心知识归纳

    面向对象 概念 面向对象就是使用对象。面向对象开发就是使用对象开发。 面向过程就是用过程的方式进行开发。面向对象是...

  • 面向对象(未完成)

    面向对象 标签(空格分隔): 面向对象 第一章:面向对象(上) 什么叫面向对象 面向过程、面向对象、两者区别 构造...

  • 面向对象:创建对象&继承

    博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...

  • 面向对象

    了解什么是面向对象 首先,我们学习面向对象,要了解什么是面向对象,面向对象的重要概念:类,对象。 面向对象提出的这...

  • 面向对象的三大基本特征和五大设计原则

    1、面向对象概念 1.1、理解面向对象 面向对象是相对面向过程而言; 面向对象和面向过程都是一种思想; 面向过程:...

网友评论

      本文标题:面向对象

      本文链接:https://www.haomeiwen.com/subject/rcgibktx.html