开发者社区> 问答> 正文

python中什么是类

python中什么是类

展开
收起
云计算小粉 2018-05-10 20:11:05 1945 0
2 条回答
写回答
取消 提交回答
  • class关键字定义

    具有多态,继承等特点。

    2019-11-22 15:34:56
    赞同 展开评论 打赏
  • 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
    2019-07-17 22:25:23
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载