美文网首页
007 面向对象编程——基础

007 面向对象编程——基础

作者: Jame_Y | 来源:发表于2019-07-22 09:32 被阅读0次

1 知识点:Object Oriented Programming (OOP)

类和示例的区别:群体和个体的区别。

万事万物,皆为对象。

注意:类是对象,由类生成的实例,也是对象。

对比

面向过程编程:首先分析出解决问题所需要的步骤(即“第一步做什么,第二步做什么,第三步做什么”),然后用函数
实现各个步骤,再依次调用。

面向对象编程:不是考虑执行过程,而是考虑先创建类、定义好属性、方法(是什么和能做什么)

举个栗子:奶牛和黄牛都是牛

上面这句话隐含的共识:奶牛和黄牛都属于牛这个类。
属性(attribute):有什么特征,比如体重大,都吃草
方法(method):有哪些行为和作用,比如能站着睡觉...

class Computer:

    screen = True

    def start(self):
        print('电脑正在开机中……')

# 类名首字母大写
class Chinese:
    # 用赋值语句,创建类的属性
    eye = 'black'

    # 创建实例方法时,不要漏了 self
    def eat(self):
        print('吃饭,选择用筷子。')

注:

  1. 类名的首字母要大写

1.1 关于 self的解释

  1. 实例方法的创建语句,和函数的定义语句很类似,唯一不同的是:实例方法中有个必须放在首位的参数self
  2. 参数self的特殊之处:在定义时不能丢,在调用时要忽略
  3. 参数self的作用:self会接收实例化过程中传入的数据,当实例对象创建后,实例便会代替self,在代码中运行。

类的实例化与调用

Liu_Xiang = Chinese()
print(type(Liu_Xiang))
Liu_Xiang.eat()

self的作用相当于先给实例占了个位置,等到实例创建好就“功成身退,退位让贤”,其存在是为了方便数据的流转。

参数内部调用

# 类名首字母大写
class Chinese:
    # 用赋值语句,创建类的属性
    eye = 'black'

    # 创建实例方法时,不要漏了 self
    def eat(self):
        print(self.eye)
        print('吃饭,选择用筷子。')

2 初始化方法

定义初始化方法的格式:def __init__(self)
初始化方法的作用在于:当每个实例对象创建时,该方法内的代码无须调用就会自动运行。

class Chinese:
    def __init__ (self, mouth, eye):
        self.mouth = mouth  # self.不能丢
        self.eye = eye
    
    def body(self):
        print('我有%s张嘴巴' % self.mouth)
        print('我有%s只眼睛' % self.eye)

person = Chinese(1, 2)
person.body()

>>> 我有1张嘴巴
>>> 我有2只眼睛

如果我们需要传入的数据能在类中长久保存并能被随时调用,初始化方法就是一个不错的解决方案。

总结:

  1. 面向对象编程适合那种较复杂,尤其是持续更新的代码,且将产生巨大的优势。
  2. 面向对象编程,将代码具体的数据和处理方法都封装在类中,让我们不用完全了解过程也可以调用类中的各种方法。

“面向对象编程,会为你打开一个新的世界”。这就相当于段誉的“北冥神功”。

3 小练习

下面的程序就可以一次性调用两个方法,因此会同时打印两句话。

class Chinese:

    def __init__(self,hometown,region):
        self.hometown = hometown
        self.region = region
        print('程序持续更新中……')

    def born(self):
        print('我生在%s。'%(self.hometown))

    def live(self):
        print('我在%s。'%(self.region))
    
    # 新建方法,调用上面的两个方法(注:方法名可自定义)。
    def citys(self):
        self.born()
        self.live()

Jame = Chinese('浙江', '上海')
Jame.citys()

自定义一个复读机机器人,会把你的话重复三遍。

class Robot:
    def __init__(self, robot_name, my_name, sentence):
        self.robot_name = input('Who am I?')
        self.my_name =  input('Who are you?')
        self.sentence = sentence
        print('hello world, tell me what you want')
    
    def say_more(self):
        print(self.sentence)
        print(self.sentence)
        print(self.sentence)
        
robot = Robot('See you')
robot.say_more()

相关文章

  • 007 面向对象编程——基础

    1 知识点:Object Oriented Programming (OOP) 类和示例的区别:群体和个体的区别。...

  • python面向对象学习笔记-01

    学习笔记 # 0,OOP-Python面向对象 - Python的面向对象 - 面向对象编程 - 基础 -...

  • Spring系列:Spring框架为我们提供了哪些编程模式,都了

    面向对象编程 java语言本身就支持面向对象语言的编程特性,Spring在此基础进行了丰富和扩展,让面向对象编程更...

  • JavaScript之 new 命令

    JavaScript 面向对象编程的基础知识篇 1 。 1. 概述 面向对象编程(Object Oriented ...

  • 面向对象编程的反向学习

    今天看了篇关于面向对象编程的文章,发现自己对于面向对象编程的基础理解甚少。作者对于面向对象编程的问题描述正式我们在...

  • Java基础03面向对象

    Java 基础02Java编程基础 面向对象上 面向对象的概述 面向对象的概述:面向对象是一种符号人类思维习惯的编...

  • python的面向对象

    python的面向对象(ObjectOriented,OO)-面向对象编程-基础-公有私有-继承-组合,Minxi...

  • Python OOP-1

    0. OOP-Python面向对象 Python面向对象 面向对象编程基础公有私有继承组合,Mixin 魔法函数魔...

  • cpp面向对象

    面向对象编程 [TOC] 类 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 ...

  • Swift Day 21 面向协议编程 POP (重要)

    一、对 POP 的基础认知 1. 什么是面向协议编程?会取代面向对象编程吗? 面向协议编程(Protocol Or...

网友评论

      本文标题:007 面向对象编程——基础

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