小白学Python---面向对象01

Python对象与类详解
本文详细介绍了Python中对象和类的概念,包括如何定义类、创建对象及对象的属性和方法。并通过实例演示了Python中对象的访问可见性,以及如何通过类来实现时钟和倒计时器的功能。

  python里面处处皆是对象!那么到底什么是对象?官方答案:把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为(class),通过类的封装(encapsulation)隐藏背部细节,通过继承(inheritance)实现类的特化(specialization)和泛华(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。虽然听不太懂,但是我知道学了python我也会有对象了。

 

 

 

类和对象

  类是对象的模板和集合,而对象是类的实例,前者是抽象概念,后者是个具体东西。对象都有静态特征(属性)和动态特征(行为),将一群具有共同特征的对象圈起来,就可以定义为“类”。总共分三步:

1、定义类,使用class关键字,类名的每个单词首字母大写

数据抽象—>抽取对象共同的静态特征(找名词)—>属性

行为抽象—>抽取对象共同的动态特征(找名词)—>方法

2、调用构造方法创建学生对象

3、通过给对象发消息,让对象完成某些工作

class Student(object):#定义类,object是类的爸爸

    def __init__(self, name, age):
        self.name = name
        self.age = age
    def study(self,course):#定义行为方法
        print('%s正在学习%s' % (self.name, course))


def main():
    stu1 = Student('小明',18)
    stu1.study('python程序设计')


if __name__ == '__main__':
    main()

 Python中对象的访问可见性

  一般的编程语言,都会把对象的属性设置为私有的或受保护的,但是对象的方法是公开的。在python里面实际上从语法上严格来讲没有保证对象属性和方法能够受私密保护,我们通常采用“隐喻”的方法:若希望属性是私有的,在属性名下用2个下划线作为开头。但其实如果你知道更换名字的规则,你也可以访问到该对象。以下2段代码可以对访问性做实例说明。

class Test:
def __init__(self, foo):   self.__foo = foo
def __bar(self):#__bar将bar名字私有保护   print(self.__foo)   print('__bar') def main(): test = Test('hello') # AttributeError: 'Test' object has no attribute '__bar'出错 test.__bar() # AttributeError: 'Test' object has no attribute '__foo' print(test.__foo) if __name__ == "__main__": main()
class Test:
    
    def __init__(self, foo):
        self.__foo = foo
        
    def __bar(self):
        print(self.__foo)#打印出hello
        print('__bar')#打印出__bar
        
def main():
    test = Test('hello')
    test._Test__bar()
    print(test._Test__foo)#打印出hello
    
if __name__ == "__main__":
    main()

习题:定义一个类描述数字化的时钟如:00:00:00

import time


class Clock(object):

    def __init__(self, hour=0, minute=0, second=0):
        self._hour = hour
        self._minute = minute
        self._second = second

    def go(self):
        self._second += 1
        if self._second == 60:
            self._second = 0
            self._minute += 1
            if self._minute == 60:
                self._hour += 1
                self._minute = 0
                if self._hour == 24:
                    self._hour = 0

    # 可以获得对象的字符串表示形式 当我们用print打印对象时会自动调用该方法
    def __str__(self):
        return '%02d:%02d:%02d' % (self._hour, self._minute, self._second)

   
def main():
    #Clock参数有默认值,可以自己设置
    nowtime = Clock(12,25,56)
    while True:
        print(nowtime)
        nowtime.go()
        time.sleep(1)

if __name__ == '__main__':
    main()

 习题:仿照上述习题,定一个倒计时器

class Count_Down(object):

    def __init__(self,hour=1,minute=0,second=5):
        self._hour = hour
        self._minute = minute
        self._second = second

    def cut_time(self):
        if self._hour == 0 and self._minute==0 and self._second == 0:
            return False
        elif self._second == 0:
            if self._minute == 0:
                self._hour -= 1
                self._minute = 59
                self._second =60
            else:
                self._minute -= 1
                self._second = 60
        self._second -= 1
        return True

    def show(self):
        return '%02d:%02d:%02d' % (self._hour, self._minute, self._second)

def main():
    import time
    x = Count_Down()
    while x.cut_time():
        print(x.show())
        time.sleep(1)
    print('时间到了')
if __name__ == '__main__':
    main()

 

转载于:https://www.cnblogs.com/bbszc520/p/8569900.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值