天天看点

python面向对象总结_Python 面向对象 总结

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

·

·

·

持续更新中 ..................

未完待续

继续阅读