007 面向对象编程——基础

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 面向对象编程——基础)