????????Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。
?????????如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。
面向对象的由来:
60年代中期的软件危机
- 落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列问题的现象
- 软件标准化与可重用性得到了工业界的高度重视,在避免重用劳动,缓解软件危机方面起到了重要作用。
面向对象的优点:
- 一种全新的组织代码的方式
- 更加符合人类的思维习惯
类定义
class Person:
def __init__(self, name, sex, job,age):
self.name = name # 创建属性并赋值
self.sex = sex # self.name 和name 的从属范围是不一样的
self.job = job
self.age = age
#共有行为
def performs(self):
# self可以调用当前对象的属性和方法
print(self.name + "正在表演拿手好戏")
def fight(self, other):
pass
????????使用变量name,sex,job存储数据域,表示状态和属性。为了便于理解,可以把self翻译成自己,后面的点翻译成的。比如自己的名字是name。接下来有定义了两个函数,在类中称为类的方法,用来定义对象的行为或动作。?强调一下,类的属性和方法的选取是根据实际的应用需要而选取的。
创建对象
? ? ? ? 类会提供一种特殊的方法:__init__,被称为初始化程序,它在创建和初始化这个新对象时被调用。一旦定义了类,就可以使用构造方法由类来创建对象person = Person(“小鱼儿”,“男”,“侠客”)。这相当于我们使用了构造方法在内存中创建了对象,这个对象包含了name,sex等数据域(变量)。这时,就会自动调用__init__(sels, ....)初始化对象,self参数自动引用刚创建的对象。然后创建的对象person就指向了内存空间的地址。
绘制类图
?
? ? ? ? 在编写程序时,首先需要对程序进行设计,因此在设计面向对象的程序之前,往往需要借助软件绘制类图,以便我们更好的理清思路,方便我们编写代码。类图中,-号表示属性,+号表示方法。每个属性都有对应的数据类型,每个方法都有对应的参数和返回值。这里我向大家推荐一下类图绘制工具-----Astah UML,可自行百度下载。
? ? ? ? 下面是在Pycharm中的代码展示
class Actor:
def __init__(self, name, sex, job, age):
self.name = name # 创建属性并赋值
self.sex = sex # self.name 和name 的从属范围是不一样的
self.job = job
self.age = age
def performs(self):
# self可以调用当前对象的属性和方法
print(self.name + "正在表演拿手好戏")
def action(self):
# self可以调用当前对象的属性和方法
print(self.name + "正在练习功法")
def fight(self, other):
pass
if __name__=='__main__':
actor1 = Actor("佟湘玉", "女", "掌柜的", "21")
print("姓名:" + actor1.name)
print("性别:" + actor1.sex)
print("职业:" + actor1.job)
print("年龄:" + actor1.age)
actor1.performs()
actor2 = Actor("小鱼儿", "男", "侠客", "20")
print("姓名:" + actor2.name)
print("性别:" + actor2.sex)
print("职业:" + actor2.job)
print("年龄:" + actor2.age)
actor2.action()
D:\Anaconda3\envs\PyTorch\python.exe "E:/pycharm project/actor.py"
姓名:佟湘玉
性别:女
职业:掌柜的
年龄:21
佟湘玉正在表演拿手好戏
姓名:小鱼儿
性别:男
职业:侠客
年龄:20
小鱼儿正在练习功法
Process finished with exit code 0
? ?
|