python的类与子类

作者: Sonia_Du | 来源:发表于2019-04-23 11:50 被阅读0次

    [TOC]

    1、类的定义
    类是用来将代码与代码处理的数据相关联,有助于降低复杂性,更易维护代码;
    python也提供了一种方法将代码及其处理的数据定义为一个类,一旦有了类,就可以用它来创建(或实例化)数据对象,它会继承类的特性;
    在面向对象的世界里,代码通常称为类的方法method,而数据通常称为类的属性attribute,实例化的数据对象通常称为实例instance。
    每个对象都由类创建,并共享一组类似的特性。
    定义一个类时,实际上是在定义一个定制工厂函数,可以在代码中引用这个函数

    image.png

    2、定义类及使用
    Step1:使用class创建对象

    class Athlete:                        #Athlete为类名
        def __init__(self):
        # the code to initialize a 'Athlete' object
    

    Step2:创建对象实例
    将对类名的调用赋至各个变量,通过这种方式,类(以及init())方法提供了一种机制,允许创建一个定制的工厂函数,用来根据需要创建多个对象实例:
    a = Athlete()
    b = Athlete()
    c = Athlete()
    d = Athlete()

    image.png

    3、self参数的重要性
    是一个方法参数,总是指向当前对象实例

    • 目标标识符赋至self参数
    • 每个方法的第一个参数都是self

    4、例子

    class Athlete:
        def __init__(self,value = 0):
            self.thing = value
        def how_big(self):
            return(len(self.thing))
    
    >>> d=Athlete("hello")
    >>> d.how_big()
    5
    >>> d
    <__main__.Athlete object at 0x03269FB0>
    
    image.png
    class Athlete:
        def __init__(self,a_name,a_dob=None,a_times=[]):
            self.name = a_name
            self.dob = a_dob
            self.times = a_times
    
    >>> d =Athlete('q','2012-6-17',['2.36','2.35'])
    >>> b =Athlete('p')
    >>> type(d)
    <class '__main__.Athlete'>
    >>> type(b)
    <class '__main__.Athlete'>
    #虽然都由d和b都经过了Athlete这个工厂函数处理,但是存储在不同的内存地址上
    
    >>> d
    <__main__.Athlete object at 0x02F09F90>
    >>> b
    <__main__.Athlete object at 0x0336F850>
    >>> d.name
    'q'
    >>> d.dob
    '2012-6-17'
    >>> d.times
    ['2.36', '2.35']
    >>> b.dob
    >>> b.times
    []
    

    子类

    1、子类的定义
    通过继承现有的其他类来创建一个类,包括用list,set,dict提供的python内置数据结构类。

    2、定义子类及使用

    • NamedList:新类名
    • list:被派生的老类
    • list.init([]):初始化所派生的类
    • self.name = a_name:把参数赋至属性
    >>> class NamedList(list):
        def __init__(self,a_name):
            list.__init__([])
            self.name = a_name
    
            
    >>> j = NamedList("Jone")
    >>> type(j)
    <class '__main__.NamedList'>
    >>> dir(j)
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'name', 'pop', 'remove', 'reverse', 'sort']
    >>> j.append('b')
    >>> j
    ['b']
    >>> j.name
    'Jone'
    

    相关文章

      网友评论

        本文标题:python的类与子类

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