美文网首页
python中类的定义和使用

python中类的定义和使用

作者: 又双叒叕苟了一天 | 来源:发表于2018-07-05 22:50 被阅读0次

    参考文章:https://www.cnblogs.com/chenxiaoyong/p/6279874.html

    类的定义

    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)
    

    类的继承

    父类

    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()
    

    类的组合使用

    先定义一个类

    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()
    

    内置功能

    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 # 调用__str__,如果不存在则调用__repr__
        pybook() # 调用__call__
    

    操作符的重载

    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
    

    相关文章

      网友评论

          本文标题:python中类的定义和使用

          本文链接:https://www.haomeiwen.com/subject/qozcuftx.html