PYTHON奇幻冒险记20 菇凉,给你介绍个对象

PYTHON奇幻冒险记20 菇凉,给你介绍个对象

第20课 菇凉,给你介绍个对象
不文艺,不人生


每天只需要占用大家中午吃饭的十分钟,有事没事看一下,轻松掌握一门语言!让我们一起努力吧。

欢迎大家来到PYTHON的奇幻冒险世界!正如前文所说的一样,今天我们来一起谈对象!说说那些年,相处了那么多年,但还是没有领悟的对象!拯救世界的事情太累,不关心地球是不是要爆炸,只想简简单单的干好自己能力以内的事。


1. 陌生的“对象”?

想要了解清楚这个概念,首先我们的要从累,不对泪,也不对,类!这个概念说起!

1.1 类

人之所以高等于其他的动物,是因为人知道如何将具有某一种相似特征的事物归为一块!而不是给每一种未曾见过的动物乱起名字。很简单的一个道理,帮助我们理解类!当我们在网上买一些东西的时候,是不是也是参考不同的种类而出手呢?
在这里插入图片描述
其实从我们PYTHON系列文章的一开始,就一涉及到了类的概念!比如说,整数,字符串,浮点数等等,不同数据类型就是不同的类!

print(type('100')) # '100'属于字符串类'str'
print(type(100))  # 1属于整数类'int'
print(type([100])) # [1]属于列表类'list'

运行结果:

<class 'str'>
<class 'int'>
<class 'list'>

或者,在通俗的理解,现在我们看在文章或许用的是手机,或是用的电脑,就是电子产品类!而我们就是人类!

1.2 实例

还是简单的说,狗是一个类!二哈就是狗这个大类中的一个实例!在PYTHON的世界里面,实例也叫instance!
好了,有了上面的基础,现在我们可以开始我们这节课的主要问题了!

2. 谈对象object

在PYTHON的世界里面,对象等于类和实例的集合!整么理解这就话呢?其实就是说,类可以看作是对象,实例也可以看做是对象!

2.1 类的创建以及调用

当我们描述一个人或者一件事情的时候,通常都会将他分成多了特征的相同点!
比如说从外在的层次看:高,富,帅,白,富,美。

从内在的层次看:善良,虚伪,孝顺,诚实,勇敢。

在PYTHON的奇幻世界里面,也是怎么分的,只是叫法不一样!我们会把第一种共同点叫作“属性”,第二种叫做“方法”。

PYTHON中,每个类都用自己的属性和方法!是这个类所有实例的共享!这就是说:每个实例都可以调用类中所有的属性和方法!
当然坏人永远不像电视上演的那样,脸上写着坏人!PYTHON世界里面,同样各个类的定义也是很抽象的!

下面我们就用代码说话!

2.2 类的创建

话不多说,先看代码,PYTHON的世界里,满足你的一起幻想!

class Mobile_Phone:     # 类的创建class + 冒号
	screen = True       # 类的属性创建:
    def show(self):     # 实例方法的创建:def+方法名(self)
        print('欢迎来到PYTHON的奇幻世界')

在类中赋值变量叫做属性,类中定义的函数叫做方法
实例方法是指类中参数带有self函数,是类方法的一种形式,也是最常用的用法!

下面我们就学以致用,写个例子,帮助大家理解!

class Asian:
# 亚洲人是类!属性:头发是黑色的
    hair = 'BLACK'
    
# 方法:打印出'吃饭,选择用筷子。'
def eat(self):
    print('kuaizi')

2.3 类的调用

接下来,我们就要学习一下类的调用!还是刚才手机的例子!大家最好可以自己动手敲一下!

class Mobile_Phone:     # 类的创建class + 冒号
	screen = True       # 类的属性创建:
    def show(self):     # 实例方法的创建:def+方法名(self)
        print('欢迎来到PYTHON的奇幻世界')
    
my_iphone_max_512 = Mobile_Phone()
print(my_iphone_max_512.screen)
my_iphone_max_512.start()

my_iphone_max_512 = Mobile_Phone()这个过程叫作:类的实例化,即在某个类下创建一个实例对象!

类的实例化!
语法:实例名 = 类名()
例子:my_iphone_max_512 = Mobile_Phone()
意义:创建了我们自己的实例,就可以调用所属类中的属性和方法了!

class Mobile_Phone:     # 类的创建class + 冒号
    screen = True       # 类的属性创建:
    def show(self):     # 实例方法的创建:def+方法名(self)
        print('欢迎来到PYTHON的奇幻世界')
    
my_iphone_max_512 = Mobile_Phone()
print(my_iphone_max_512.screen)
my_iphone_max_512.show()

运行结果:

True
欢迎来到PYTHON的奇幻世界

解释一下,大家看最后两行代码!
print(my_iphone_max_512.screen)获取到类属性screen对应的值True,再用print()打印出来。
my_iphone_max_512.show()调用方法show(),这个方法的功能是直接打印出’欢迎来到PYTHON的奇幻世界’。

不知道大家有没有这样的一个问题,为什么实例调用方法的时候不用传参,而是定义self?
大家自己可以看看想想!后面我会告诉大家的!

继续努力,只要我们学会了对象,就可以勇敢的对自己喜欢的对象说:“安红,XXX”


class Asian:
# 亚洲人是类!属性:头发是黑色的
    hair = 'BLACK'
    
# 方法:打印出'吃饭,选择用筷子。'
    def eat(self):
        print('kuaizi')
    
my_chinese = Asian()
print(my_chinese.hair)
my_chinese.eat()

运行结果:

BLACK
kuaizi

怎么样,没错吧!是不是很棒啊!其实并不是很难!大家一定要相信自己,没有什么追不到的女神,如果有,说明你值得拥有更好的人!

归纳一下方法:

1. 创建一个类
2. 类的实例化
3. 用实例调用类的属性和方法

现在我们继续深入的学习,多新建一些实例,帮助大家更好的理解!

class Asian:
# 亚洲人是类!属性:头发是黑色的
    hair  = 'BLACK'
    speak = 'Hanyu'
    
# 方法:打印出'吃饭,选择用筷子。'
    def eat(self):
        print('kuaizi')
    
tommi_wei    = Asian()
dawenxi      = Asian()
xiaopengpeng = Asian()
print(tommi_wei.hair)
print(dawenxi.speak)
xiaopengpeng.eat()

运行结果:

BLACK
Hanyu
kuaizi

是不是很神奇啊~继续学习,接下来我们要搞明白创建类的两个关键问题!学会了PYTHON,就没有学不会的语言!

2.3.1 特殊参数:self

关于self,其实我的理解他就是一个影子!或许就是我们口中常说的电灯泡!self会接收实例化过程中传入的数据,当实例化对象创建后,
self又会被替换掉,也扮演不了什么重要的角色,更不会对你们的爱情造成威胁和影响。
话不多说,先看代码,PYTHON的世界里,满足你的一起幻想!

class like:
# 亚洲人是类!属性:头发是黑色的
    fruits  = 'apple'
    #hair  = 'BLACK'
    #speak = 'Hanyu'
    
# 方法:打印出'吃饭,选择用筷子。'
    def eat(self,foods):
        print(foods+'')
    
tommi_wei    =   like()
#dawenxi      = Asian()
#xiaopengpeng = Asian()
print(tommi_wei.fruits)
tommi_wei.eat('苹果')

运行结果:

apple
苹果

但是这样是不是多此一举?出来了两个苹果。那么问题处在了哪里呢?大家好好想想?如果想在类的内部调用属性,而实例没有创建前,我们就需要有个变量先代替接收数据,这个变量就是self。

class like:
# 
    fruits  = 'apple' # 类属性fruits
    #hair  = 'BLACK'
    #speak = 'Hanyu'
    
    def eat(monkey):
        print(monkey.fruits + '好吃的水果')
    
monkey    =   like()  ## 创建like的实例monkey
#dawenxi      = Asian()
#xiaopengpeng = Asian()
#print(tommi_wei.fruits)
monkey.eat()         # 调用实例方法
#print(dawenxi.speak)
#xiaopengpeng.eat()

运行结果:

apple好吃的水果

我们再看一个例子!

class NBA_basketball:

    def HaDeng(self):
        print('很高兴遇见你,大哥')

    def DuLanTe(self):
        self.HaDeng() 
        print('三弟,欢迎加入篮网')

basketball = NBA_basketball()
# 创建实例basketball
#basketball.HaDeng()
basketball.DuLanTe()

运行结果:

很高兴遇见你,大哥
三弟,欢迎加入篮网

从上面的例子中,可以看到basketball在调用DuLanTe()方法时,便会执行DuLanTe()内部的语句。此时,self.HaDeng()也就变成了basketball.HaDeng()。
总之,大家需要注意一下:
只要是在类中用def创建方法时,就必须把第一个参数位置留给self。调用方法的时候,可以忽略。
在类的方法内部想要调用类属性或者其他方法时,就需要采用self.属性名或者self.方法名。

2.3.2 初始化方法

定义初始化方法的格式是def __ init__(self),是由init加左右两边的【双】下划线组成( initialize “初始化”的缩写)。

初始化的好处是:当每个实例对象创建时,该方法内的代码无需调用就会自动执行。

class NBA:

    def __init__(self): 
        print('很高兴遇见你,哈登,欢迎加入篮网')

DuLanTe = NBA()

运行结果:

很高兴遇见你,哈登,欢迎加入篮网

创建了实例,没有调用,初始化方法就已经执行了~你以为写到这里就结束了吗?远远没有!后面的内容更加精彩!
话不多说,先看代码,PYTHON的世界里,满足你的一起幻想!

利用这个方法,我们可以为类的属性设置初始值!

class NBA:
    def __init__ (self):
        self.HaDeng = 3000  # self.不能丢
        self.DuLanTe = 4000
    
    def body(self):
        print('哈登年薪%s万美金' % self.HaDeng)
        print('杜兰特年薪%s万美金' % self.DuLanTe)

NETS = NBA()
NETS.body()

运行结果:

哈登年薪3000万美金
杜兰特年薪4000万美金

除了上面的固定设置,也可以采用别的方法,传递可以变化的参数!

class NBA:
    def __init__(self,TEAM):
        self.TEAM = TEAM
    def belong(self):
        print('哈登不再属于%s。'%self.TEAM)
        
HaDeng = NBA('火箭')
HaDeng.belong()

运行结果:

哈登不再属于火箭。

学到了这里,任务已经完成了一大半了!继续加油!

3 面向对象

其实,在读研的时候,学过一门课程叫做面向过程!他的出现要比面向对象更早一些!

想要真正的了解面向对象编程的逻辑,就必须先学会什么是面向过程!还是以往的风格,复杂的知识简单化!
面向过程编程就是把一件复杂的事情,分成很多步骤!先做哪一步,接下来再做哪一步?最后再做哪一步!就是这样!
以我们PYTHON第18讲的内容为例!如果将工程计时器的代码改成面向对象编程语言的话?应该怎么修改呢?给大家留一个思考!

总结

希望,本期的内容不要太枯燥!也希望对你有帮助!PYTHON其实并不是很难!当你想象自己在奇幻的冒险,经历一些有趣的事情。也许你就会发现其中的乐趣!下期的内容同样也很精彩,下期我们再见~
随便说一下,大家想知道我的情感历程?就在我的《人性的弱点》。
欢迎大家阅读我的《人性的弱点》,给你一种不一样的感觉!

猜你喜欢

转载自blog.csdn.net/weixin_46259642/article/details/112598694