小糖果python之面向对象(中)

  • 1. 为什么实例化对象可以访问类的属性和方法?

  • (1)属性和方法的查找流程

当调用一个对象的属性时,解析器会先在当前对象中寻找是否含有该属性,如果有则直接返回当前对象的属性值;如果没有,则去当前类对象当中寻找。如果类对象中没有,则报错。
即:实例化对象先找自己属性,自己不存在再找类对象,类对象没有则报错。

  • (2)类对象和实例对象都可以保存属性(方法)

果属性和方法是所有势力所共享的,则应该保存到类对象中;如果属性和方法是某个实例所独有的,则应该保存到相应的实例对象中。一般情况下,属性保存到实例对象当中,方法则保存到类对象当中。

2. self参数

在类中,方法每次调用时解析器会自动传递一个实参
如果是实例化对象p1调用,则第一个参数就是p1对象
如果是实例化对象p2调用,则第一个参数就是p2对象
一般我们都会将这个对象命名为self

class person:
	name='葫芦娃'
	def speak():
		print('你好,我是%s'%self.name)
#创建实例
p1=person()
p2=person()
p1.name='钢铁侠'
p2.name='蜘蛛侠'
p1.speak()
p2.speak()
你好,我是钢铁侠
你好,我是蜘蛛侠

3. 特殊方法

出问题:
(1) name属性时必须的
(2) name属性是不同的
(3) 手动添加实例化对象属性值的时候容易出错

在类中定义特殊方法,该方法都是以双下划线开头 双下划线结尾: init

特殊方法不需要我们自己调用,
特殊方法会在特殊时自己调用特殊方法。如果类中有类属性,则优先执行类属性,在执行特殊方法。

class person:
	def __init__(self,name):
		self.name=name
	def speak(self):
		print('你好,我是%s'%self.name)
p1=person('牛叉')#将属性放于实例对象中
p2=person('走你')
p1.speak()
p2.speak()
你好,我是牛叉
你好,我是走你

4. 总结

  • 类的基本结构:
class 类名([父类]):
	公共属性...
	# 对象的初始化方法
	def __init__(self,....):
		....
	# 其他的方法
	def method1(self):
		...
	def method2(self):
		    ...
实例化对象.....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值