Day6:class函数

半夜睡不着来更新XD


Python属於「物件导向程序语言」(Object-oriented programming language, OOPL)

那什麽是物件呢?

物件(Object)

物件也就是类别的实例,也就是说有了类别这张蓝图我们可以在程序中产生许多手机类别的资料,而这些资料彼此之间不互相影响,每一个皆是独立的。

类别(Class)与物件(Object)其实是个一体两面的东西,简单解释:

类别算是一个蓝图、一个可参考的文件,他没有实体的概念,是静态的。

物件是具有实体概念,状态会随时改变,是动态的,但架构不会改变。
举例来说:手机

类别(class):设计蓝图

物件(object):实际设计好的手机

两者关系:设计蓝图(类别)决定手机要怎麽制作,决定要用多少规格的CPU、多少画素的相机、手机外观要长怎样。实际制作出来的手机(物件)是照着设计蓝图所生产出来的,使用者也只能照着设计图所订定的规格使用手机。

以上引用自《初学者应该要知道的物件导向概念》之文章

接下来我们来一一拆解这程序码吧!

[In]
#食物种类
class Food():
    #建构式(Constructor)
    def __init__(self,taste,flavor): #__init__(self)=initialization
        self.taste = taste #属性 #self代表了目前的物件(object)
        self.flavor=flavor #属性
#方法(medhod)
    def eater(self):
        print(f"This steak is {self.taste} and have {self.flavor} .") #字串格式化
#透过self.taste及self.flavor的方式来存取目前物件(steak)的属性值(taste,flavor)
steak = Food("juicy","good")
steak.eater()
'''
在python里面,所有的资料类型都是' 物件 ',然而,python也允许工程师自己创类型,而自创的类型,我们称为 ( 类别[Class] )
'''
[Out]
This steak is juicy and have good .

一、类别(Class)

用於定义未来产生物件(Object)时所拥有的属性(Attribute)及方法(Method)

class Food():

二、物件(Object)

透过类别(Class)实际建立之实体,可用isinstance()来判断类别(Class)与物件(Object)的关系。会return 布林值

steak = Food()
[In]
class steak:
      pass #定义一个函数,空着不写会产生语法错误,故使用 pass。 

class soda:
    pass #定义一个函数,空着不写会产生语法错误,故使用 pass。

food=steak()

print(isinstance(food,steak))
print(isinstance(food,soda))
[Out]
True
False

三、属性(Attribute)

要先有物件(Object)才能定义属性(Attribute)

food=steak()
steak = Food("juicy","good")
steak.eater()

四、建构式(Constructor)

这个self就是告诉类别(Class)目前是在设定哪一个物件的属性(Attribute)。

    #建构式(Constructor)
    def __init__(self,taste,flavor): #__init__(self)=initialization
        self.taste = taste #属性 #self代表了目前的物件(object)
        self.flavor=flavor #属性

五、方法(Method)

方法(Method)和建构式(Constructor)一样至少要有一个self参数。

def eater(self):
        print(f"This steak is {self.taste} and have {self.flavor} .") #字串格式化

结论及反省

这篇就是从网路上引用class的用法。对class之用法着实有所阙如,愿下次在运用class以及物件时能有更深一步之认识和更加熟稔。

Source:

https://ppt.cc/fNYzgx
https://ppt.cc/fmsoQx
https://ppt.cc/fHlUex


<<:  Day5:def函数

>>:  百度存档列印

Day 18 (Xd)

1.开启自己手机的解析度面板 安卓计算: 495ppi-->对应的dpi范围为480以上--&...

Day23 Load balance with Istio

昨天非常粗浅的介绍过 istio 後,今天我们要来实际将 Istio mesh 注入我们的 clus...

前端工程师也能开发全端网页:挑战 30 天用 React 加上 Firebase 打造社群网站|Day27 无限卷动读取文章列表

连续 30 天不中断每天上传一支教学影片,教你如何用 React 加上 Firebase 打造社群...

gMSA 设定无密码的工作排程 (下)

使用gMSA作为Sql Server的服务帐号 有时候为了让管理跨server的资源更方便,服务就需...

Day28回圈(JavaScript)

回圈 JS一般使用的回圈有这几种 for 给予一定的循环次数做回圈 for/in 在指定对象的属性里...