学习Python的第四天
一.类和对象:(对象是累的实例化)
1.定义类(class)
class lei(object):
def __init__(self):#在创建对象时进行初始化
self.a=1000
def study(self):
print("正在学习")
if __name__=="main":
lei_=lei() #相当于调用__init__()
lei_.study()
"""
属性和方法的访问只有俩种,公开的和私有的
如果是私有的,定义时加俩个下划线
加单下划线是约定为私有的
"""
class tst(object):
def __init__(self):
self.__foo=100
def __bre(self):
print(self.__foo)
print('__bar')
if ___name__=="__main__":
ts=tst()
ts.__bre()
#私有不可调用,如果想调用可以用ts._tst__bre()或用访问器调用
在这里插入代码片
面向对象的支柱为:封装,继承,多态
练习:定义一个类描述数字时钟
class clock(object):
def __init__(self,shi=0,fen=0,miao=0):
self._shi=shi
self._fen=fen
self._miao=miao
def run(self):
self._miao +=1
if self._miao==60:
self.miao=0
self._fen +=1
if self._fen==60:
self._fen=0
self._shi +=1
if self._shi==24:
self._shi=0
def show(self):
return '%02d:%02d:%02d' % \'(self._shi,self._fen,self._miao)
def main():
cl=clock(23,59,58)
while True:
print(cl.show())
sleep(1)
cl.run()
if __name__=="__main__":
main()
在这里插入代码片
二.面向对象进阶:
@property 装饰器
getter(访问器) setter(修改器)
例:
class person(object):
#__slots__=('__num','__sum')
#绑定__num和__sum的属性
def __init__(self,num,sum):
self.__num=num
self.__sum=sum
@property
def num(self):
return self.__num
@property
def sum(self):
return self.__sum
@sum.setter
def sum(self,sum):
self.__sum=sum
def play(self):
if self._age <= 16:
print('%s正在玩飞行棋.' % self._num)
else:
print('%s正在玩斗地主.' % self._num)
def main():
person = Person('王大锤', 12)
person.play()
person.sum = 22
person.play()
if __name__ == '__main__':
main()
在这里插入代码片
静态方法和类方法
1.静态方法和类方法都是通过各类发消息来调用
2.也可以通过给类发消息来调用对象方法弹药传入接收消息的对象作为参数
类之间的关系:
类和类之间的关系有三种:is-a(继承或泛化)、has-a(关联)和use-a(依赖)关系
继承和多态:
class 类名(object)
新建的这个类继承了object类
子类在继承了父类的方法后,可以对父类已有的方法给出新的实现版本,这个动作称之为方法重写(override