类与对象
类是什么,顾名思义,像我们生活中的电脑、猫类、狗类、防晒霜类、短袖类等等,他是有一些共有属性和行为的东西的总和。而对象就是类的实例化;像你、我、你对象(扎心了),这些都是个活生生的人,是个个体,所以他们是一个实例化的例子,是人这个类的一个例子,所以他们是对象。而同时,类也是对象,他是类对象的一种实例化。这里如果学过java的朋友就应该能很好的理解了,万物皆可对象化,说的就是这个道理。
类的创建和使用
python的类创建就比较简单粗暴了,他的创建方法如下图所示:
然后实例化的话就更简单粗暴了(直接上图)
用一个代码来具体解释一下可能会更清楚:
class Chinese:
eyes = ‘黑眼睛’
def eat(self):
print('吃饭,用筷子')
#类的实例化
chinese = Chinese()
print(chinese.eyes)
chinese.eat()
self关键字
可以看到上面的代码中有一个self作为了eat的参数,那这个self是什么呢?初学者的话(这里是指没有学过任何编程语言的人)可以这样理解:self就是这个类,他自己内部有一个实例化的例子,名字就叫self。当你在写别的方法时如果需要调用你写的别的方法的时候(因为调用方法的话必须就要:对象名.方法名())才行。但是你写例子的时候你又不知道你将来会产生什么对象。这个时候self就来帮忙了,他会说:先用我吧,我帮你的忙。所以你就可以self.方法名()就可以在你写的这个类里调用你写的实例化方法了。如果是学过java的同学,我就一句话:这玩意就是this。
特殊方法:初始化方法(你可以理解为构造方法(或者c++叫构造函数))
语法:def init(self):,是由init加左右两边的【双】下划线组成( initialize “初始化”的缩写)
这里做个解释:初学者可以这样理解,这个初始化方法顾名思义,你的对象生出来之后都要去初始化。啊,就像是每个出生的孩子都要被医生打打屁股哭一下一样,对象也是这样的(只不过不是被打屁屁哈)。每个对象他产生出来后会自动去执行初始化方法,所以你可以在初始化方法中初始化你这个类的属性。比如说你定义的中国人的类,你就可以在初始化方法中将眼睛初始化为黑眼睛,将皮肤初始化为黄皮肤。至于学过语言的同学们,就构造函数就完事,只有一个self的就是无参构造函数,有好多个参数的就是有参构造函数。
这里需要注意:如果你写了有参数的初始化方法(这里指的不是只有self),那么你的实例化例子中就一定要给参数的,他不会自己去执行没有参数的初始化方法的(编辑器都比较懒)。如果不写的话就会报错,就像下面这样:
这里放个代码体会一下无参的:
class Chinese:
def init (self):
self.mouth = 1 # self.不能丢
self.eye = 2
def body(self):
print('我有%s张嘴巴' % self.mouth)
print('我有%s只眼睛' % self.eye)
person = Chinese()
person.body()
下面是有参的:
class chinese:
def __init__(self, name, birth, region)
self.name = name # self.name = '吴枫'
self.birth = birth # self.birth = '广东'
self.region = region # self.region = '深圳'
def born(self):
print(self.name + '出生在' + self.birth)
def live(self):
print(self.name + '居住在' + self.region)
person = Chinese(‘吴枫’,‘广东’,‘深圳’) # 传入初始化方法的参数,一定要写参数啊啊啊啊啊啊啊啊啊啊
person.born()
person.live()
面向对象编程