类和实例

面向对象最重要的概念就是类(Class)和
实例(Instance)
用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的 属性 和 方法(也叫动态属性)。对象是类的实例。
对象:通过类定义的数据结构实例。
实例化:创建一个类的实例,类的具体对象。

# 类定义
class people():

    # 定义构造方法
    def __init__(self, n, a, w):
        self.name = n
        self.age = a
        self.weight = w

    def speak(self):
        print("%s 说: 我 %d 岁。" % (self.name, self.age))

# 实例化类
p = people('runoob', 10, 30)
p.speak()

首先定义一个人类,人具有的属性有,名字,年龄,体重,而且人具有说话的功能,这里将这个功能叫做方法,在具体点,就是people类中定义的函数。

注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。当然此处也可以不写self,写别的也行没只不过默认都用self,比如写roob也可以。除了构造函数init的第一个参数是self,其他类内部的函数的第一个参数必须也是self。参考下方代码。

__init__方法呢又叫做初始化方法,__init__也叫做构造函数,它的作用如上面代码所示,它可以将name,age,weight这些属性“绑”在这个“人”类上面。但是为什么没有调用init()就实现初始化方法的功能呢,这里要说明初始化方法会在类的实例化时python内部会自动调用。
注意:特殊方法__init__前后分别有两个下划线!!!

至于为什么要定义初始化方法,先举俩个例子、

class People():

	def run(self,name,age,weight):
		return "我的名字叫%s,我今年%d岁,我有%d千克,而且我打球很好。" % (name,age,weight)

person = People()
print(person.run("凌薇",18,60))

# 结果:我的名字叫凌薇,我今年18岁,我有60千克,而且我打球很好。
class People():
	def __init__(self,name,age,weight):
		self.name = name
		self.age = age
		self.weight = weight
		# 此处就相当于将这三个属性绑在了people类上
	
	def run(self):
		return "我的名字叫做%s,我今年%d岁,我有%d千克,而且我打球很好。" % (self.name,self.age,self.weight)

person = People("凌薇",18,60)
print(person.run())

# 结果:我的名字叫做凌薇,我今年18岁,我有60千克,而且我打球很好。

简单理解
通过以上俩个例子的对比,我们发现,定义完init()后,创建的每个实例都有自己的属性,也方便直接调用类中的函数。就相当于,你创建了一个人,而且这个人它自己给自己起了名字,他自己知道自己的年龄和体重,他是个真正的人类,这就是init()的作用。如果没有定义init(),就相当于这个人,他是个“AI机器人”,他不知道自己的名字,年龄,体重,需要你来告诉他。

够不够形象呢!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值