面向对象--上

一、面向对象

  • 面向过程:
    • 面向过程是指讲我们的程序分解为一个一个步骤,通过对每一个步骤的抽象来完成程序。
    • 这种编写方式往往只适用一个功能,如果要实现别的功能,往往复用性比较低。
    • 这种编写方式符合人类的思维,编写起来比较容易。
  • 面向对象:
    • 面向对象的编程语言,关注的是对象,而不是注重过程,对于面向对象一切皆是对象。
    • 这种编码方式比较容易阅读,并且易于维护
    • 容易复用,但是编写的过程不太符合常规的思想,编程相对麻烦。

二、类的简介

  • 我们目前学习的都是python的内置对象,但是内置对象并不能满足于我们的需求,所以我们在开发中经常要定义一些对象。
  • 类简单的理解就相当于一个框架(图纸),在程序汇总我们需要根据类来创建对象。
  • 类就是对象的框架(图纸)。
  • 我们也称对象是类实例(instance)
  • 如果多个对象是通过一个类创建的,我们称这些对象是一类对象。
  • 类也是对象,类就是用来创建对象的对象。
    类的创建
    语法:
# 语法:
class MyClass():
	pass

注:大驼峰的命名规则。

  • 可以向对象中添加变量,对象中的变量称为属性。
    对象的创建
    语法:
mc = MyClass()

演示示例:

# 创建一个类:
class MyClass():
	pass
# 创建一个对象(实例):
mc = MyClass()
mc1 = MyClass()
mc2 = MyClass()
mc3 = MyClass()
# isinstance--检测对象是否是类的实例(对象)
r = isinstance(mc1,type(mc1))
print(r)
# 查看对象的数据类型
print(mc, type(mc))

三、类的定义

  • 类和对象都是对现实生活中事物的抽象。
    • 类(事物)包含两部分
      • 1 .数据(属性)-- 初始化变量
      • 2 .行为(方法)-- 在类的内部定义函数
  • 方法调用: 对象.函数名()(针对方法(函数)的调用)
  • 方法调用与函数调用的区别:
    • 如果是函数调用,调用几个形参,就会传递几个实参。
    • 如果是方法调用,默认传递一个参数,所以方法中至少有一个形参。
  • 在类代码块中,我们可以定义变量和函数
    • 变量会成为给类实例(对象)的公共属性,所有的该类实例(对象)都可以通过 --对象.属性名的形式访问。
    • 函数会成为该类实例(对象)的公共方法,所有的该类实例(对象)都可以通过 --对象.方法名的形式访问。
      演示示例:
class MyClass():
    pass
# 检验
# print(id(MyClass),type(MyClass))
# 在类内部添加属性
MyClass.name = '奥特曼'

# 创建实例(对象)(并调用)
mc = MyClass()
# 在(实例)对象内部添加属性
mc.name = '葫芦娃'

# 创建实例(对象)
mc1 = MyClass()
print(mc.name)
print(mc1.name)

打印输出结果:

葫芦娃
奥特曼

总结:当实例(对象)中有属性值,那么实例第一会调用实例本身的属性,没有才会调用类中的属性值。

class Person():

    # 在类内部创建属性(类似于初始化(公共)属性)(就是定义在类中的数据)
    name = '奥特曼'
    # 在类内部定义一个方法(speak是方法名)(定义在类中的函数)
    def speak(self):
        print('我想回家')


# 创建对象(实例)
a = Person()
b = Person()
# a 添加属性值(name是属性名)
a.name = '葫芦娃'
print(a.name)
print(b.name)
print(a.speak())
print(b.speak())

打印输出结果:

/Users/wangjiaxin/venv/bin/python /Users/wangjiaxin/PycharmProjects/wangjiaxin/Python-Cheney老师基础讲解/第十一讲/3--类的使用.py
葫芦娃
奥特曼
我想回家
None
我想回家
None

总结:类和对象都是现实生活中的抽象,实际上都是有两部分构成。
1.属性 (数据)
2.方法 (行为)

调用函数的时候,有几个形参就要只有几个实参。
方法调用的时候,默认要指定一个形参,所以方法中至少有一个形参。

总结:在类的代码块中,我们可以定义变量和函数。
1.变量会成为该类实例(对象)的公共属性,所有的该类实例(对象)都可以通过 对象.属性名()的形式访问。
2.函数会成为该类实例(对象)的公共方法,所有该类实例(对象)都可以通过 对象.方法名()的形式访问。

四、self参数

  • 属性和方法:
    • 类中定义的属性和方法都是公共的,任何该类实例都可以fan访问。
    • 属性和方法的查找流程
      *当我们调用一个对象的属性时,解析器会在当前的对象中寻找是否还有该属性。 如果有,则直接返回当前的对象的属性值。 如果没有,则去当前对象的类(对象)中去寻找,如果有,则返回类(对象)的属性值。如果没有就报错。
    • 类(对象)和实例(对象)中都可以保存属性和方法
      • 如果这个属性或者方法是可以实例共享的,则应该保存至类对象中。
      • 如果这个属性或者方法是某个实例独有的。则应该保存到实例对象中。
      • 一般情况下,属性保存到实例对象中,而方法需要保存到类对象中。
        演示示例:


    # 在类的内部创建属性(初始化函数)(name是属性名)
    name = '奥特曼'

    # 在类的内部创建一个方法(speak是方法名)
    def speak(self):
        print('你好我是%s' % self.name)
        # print(self)


# 创建对象(实例)
a = Person()
b = Person()
a.name = '葫芦娃'
b.name = '奥特曼'
# 调用方法:
# print(a)
a.speak()
# 同时都是a调用的,输出的变量相同
# print(b)
b.speak()
# 同时都是b调用的,输出的变量相同

打印输出结果:

扫描二维码关注公众号,回复: 12062017 查看本文章
你好我是葫芦娃
你好我是奥特曼

  • self参数如果在方法中使用,必须携带self参数。
  • self参数就是指的是调用该方法的实例的本身。

猜你喜欢

转载自blog.csdn.net/Rhymeplot__JDQS/article/details/109089771