zoukankan      html  css  js  c++  java
  • Python中类的定义与使用

    目标:

      1.类的定义

      2.父类,子类定义,以及子类调用父类

      3.类的组合使用

      4.内置功能

    1.类的定义

    代码如下:

    #!/usr/bin/env python
    #coding:utf8
    
    
    class Hotel(object):
        """docstring for Hotel"""
        def __init__(self, room, cf=1.0, br=15):
            self.room = room
            self.cf = cf
            self.br = br
    
        def cacl_all(self, days=1):
            return (self.room * self.cf + self.br) * days
    
    if __name__ == '__main__':
        stdroom = Hotel(200)
        big_room = Hotel(230, 0.9)
        print stdroom.cacl_all()
        print stdroom.cacl_all(2)
        print big_room.cacl_all()
        print big_room.cacl_all(3)
        

    2.父类、子类以及调用父类

    代码如下:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    # 父类
    class AddBook(object):
        def __init__(self, name, phone):
            self.name = name
            self.phone = phone
    
        def get_phone(self):
            return self.phone
    
    # 子类,继承
    class EmplEmail(AddBook):
        def __init__(self, nm, ph, email):
            # AddBook.__init__(self, nm, ph) # 调用父类方法一
            super(EmplEmail, self).__init__(nm, ph) # 调用父类方法二
            self.email = email
    
        def get_email(self):
            return self.email
    
    # 调用
    if __name__ == "__main__":
        Detian = AddBook('handetian', '18210413001')
        Meng = AddBook('shaomeng', '18210413002')
    
        print Detian.get_phone()
        print AddBook.get_phone(Meng)
    
        alice = EmplEmail('alice', '18210418888', 'alice@xkops.com')
        print alice.get_email(), alice.get_phone()

    3.类的组合使用

    代码如下:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    '''
    1.class类的组合使用
    2.手机、邮箱、QQ等是可以变化的(定义在一起),姓名不可变(单独定义)。
    3.在另一个类中引用
    '''
    
    class Info(object):
        def __init__(self, phone, email, qq):
            self.phone = phone
            self.email = email
            self.qq = qq
    
        def get_phone(self):
            return self.phone
    
        def update_phone(self, newphone):
            self.phone = newphone
            print "手机号更改已更改"
    
        def get_email(self):
            return self.email
    
    
    class AddrBook(object):
        '''docstring for AddBook'''
        def __init__(self, name, phone, email, qq):
            self.name = name
            self.info = Info(phone, email, qq)
    
    
    if __name__ == "__main__":
        Detian = AddrBook('handetian', '18210413001', 'detian@xkops.com', '123456')
        print Detian.info.get_phone()
        Detian.info.update_phone(18210413002)
        print Detian.info.get_phone()
        print Detian.info.get_email()

    4.内置功能(函数()加与不加的区别)

    代码如下:

    #!/usr/bin/env python
    #coding:utf8
    
    class Books(object):
        def __init__(self, title, author):
            self.title = title
            self.author = author
    
        def __str__(self):
            return self.title
    
        def __repr__(self):
            return self.title
    
        def __call__(self):
            print "%s is written by %s" %(self.title, self.author)
    
    
    if __name__ == '__main__':
        pybook = Books('Core Python', 'Wesley')
        print pybook
        pybook()

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

    #!/usr/bin/env python
    #coding:utf8
    
    class  Number(object):
        """Custum object
        add/radd -> +; 
        sub/rsub -> -;
        mul/rmul -> *;
        div/rdiv -> /;
        """
        def __init__(self, number):
            self.number = number
    
        def __add__(self, other):
            return self.number + other        
    
        def __radd__(self, other):
            return self.number  + other
    
        def __sub__(self, other):
            return self.number - other
    
        def __rsub__(self, other):
            return other - self.number
    
    
        def __gt__(self, other):
            if self.number > other:
                return True
            return False
    
    
    if __name__ == '__main__':
        num = Number(10)
        print num + 20
        print 30 + num
        print num - 5
        print 11 - num
        print num > 20
  • 相关阅读:
    1257: [CQOI2007]余数之和
    BZOJ1036[ZJOI2008]树的统计——树链剖分+线段树
    BZOJ4822[Cqoi2017]老C的任务——树状数组(二维数点)
    BZOJ4196[Noi2015]软件包管理器——树链剖分+线段树
    BZOJ4034[HAOI2015]树上操作——树链剖分+线段树
    BZOJ5415[Noi2018]归程——kruskal重构树+倍增+堆优化dijkstra
    BZOJ2120&2453数颜色——线段树套平衡树(treap)+set/带修改莫队
    BZOJ2141排队——树状数组套权值线段树(带修改的主席树)
    初探莫比乌斯反演及欧拉反演
    BZOJ1146[CTSC2008]网络管理——出栈入栈序+树状数组套主席树
  • 原文地址:https://www.cnblogs.com/xkops/p/6269519.html
Copyright © 2011-2022 走看看