python超基础学习笔记 (二十二)—— 面向对象编程

一.什么是self

#self相当于c++中的this指针

#self相当于门牌号,例子如下:

>>>class Ball:
	def setName(self,name):
		self.name = name
	def kick(self):
		print('我叫%s,该死的,谁踢我...' % self.name)


>>>a = Ball()
>>>a.setName('球A')
>>>b = Ball()
>>>b.setName('球B')
>>>c = Ball()
>>>c.setName('球C')
>>>a.kick()
我叫球A,该死的,谁踢我...
>>>c.kick()
我叫球C,该死的,谁踢我...

二.python的魔法方法

__init__(self,param1,param2...)   
#构造方法,只要实例化一个对象的时候,这个方法就会在对象被创建的时候自动调用

#例子如下:

>>>class Ball:
	def  __init__(self,name):
		self.name = name
	def kick(self):
		print('我叫%s,该死的,谁踢我...' % self.name)
>>>b = Ball('土豆')
>>>b.kick()
我叫土豆,该死的,谁踢我...
>>>c = Ball()   #如果不输入就会报错,因为它需要一个位置参数
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    c = Ball()
TypeError: Ball.__init__() missing 1 required positional argument: 'name'

三.公有和私有

1.公有

#举例如下:

>>>class person:
    name = "cool"

    
>>>p = person()
>>>p.name
'cool'

2.私有

#在Python中定义私有变量只需要在变量名或函数名前加上“__”两个下划线,那么这个函数或变量就为私有了

#举例如下

>>>class person:
    __name = "cool"

>>>p = person()
>>>p.name   #此时变为了私有,只有从内部进行
Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    p.name
AttributeError: 'person' object has no attribute 'name'

#以下为为内部进行:

>>>class person:
    __name = "cool"
    def getname(self):
        return self.__name

    
>>>p = person()
>>>p.getname()   #从内部调用getname()进而调用__name
'cool'

#进阶访问方法

>>>class person:
    __name = "cool"
    def getname(self):
        return self.__name
>>>p._person__name   #_类名__变量名
'cool'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值