Python 面向对象 总结
声明:此文为看过《Python - 100天从新手到大师》的读后学习笔记,因此会大量引用原文内容(文字与代码)。原文链接
目录
定义类
class GiaoXiao(object):
# __init__是一个特殊方法用于在创建对象时进行初始化操作
#通过这个方法我们可以为 GiaoXiao对象绑定 name 和 skill 属性
def __init__(self, name, skill):
self.name = name
self.skill = skill
def recording(self):
print('%s发动技能%s.' % (self.name, self.skill))
创建和使用对象
def main():
gx1 = GiaoXiao('Giao', 'Yahoo')
gx1.recording()
gx2 = GiaoXiao('郭老师', '迷hotel')
gx2.recording()
if __name__ == '__main__':
main()
#运行结果:
#Giao发动技能Yahoo.
#郭老师发动技能迷hotel.
访问可见性问题
Python并没有从语法上严格保证私有属性或方法的私密性。它只是给私有的属性和方法换了一个名字来妨碍对它们的访问。
事实上如果你知道更换名字的规则仍然可以访问到它们。
在实际开发中,我们并不建议将属性设置为私有的。
大多数Python程序员会遵循一种命名惯例
让属性名以单下划线开头来表示属性是受保护的,
本类之外的代码在访问这样的属性时应该要保持慎重。
这种做法并不是语法上的规则.
单下划线开头的属性和方法外界仍然是可以访问的.
所以更多的时候它是一种暗示或隐喻.
关于这一点可以看看我的《Python - 那些年我们踩过的那些坑》文章中的讲解。
from time import sleep
class Clock(object):
"""数字时钟"""
def __init__(self, hour=0, minute=0, second=0):
"""初始化方法
:param hour: 时
:param minute: 分
:param second: 秒
"""
self._hour = hour
self._minute = minute
self._second = second
def run(self):
"""走字"""
self._second += 1
if self._second == 60:
self._second = 0
self._minute += 1
if self._minute == 60:
self._minute = 0
self._hour += 1
if self._hour == 24:
self._hour = 0
def show(self):
"""显示时间"""
return '%02d:%02d:%02d' % \
(self._hour, self._minute, self._second)
def main():
clock = Clock(23, 59, 58)
while True:
print(clock.show())
sleep(1)
clock.run()
if __name__ == '__main__':
main()
#运行结果
23:59:58
23:59:59
00:00:00
00:00:01
00:00:02
·
·
·
持续更新中 ..................
未完待续