博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【334】Python Object-Oriented Programming
阅读量:6221 次
发布时间:2019-06-21

本文共 3815 字,大约阅读时间需要 12 分钟。

Reference:

  • __init__ 方法;
  • 私有变量。

Reference:

  • class 里面的 function 创建与此一致,只是会多一个 self 参数;
  • 必备参数 —— 须以正确的顺序传入;
  • 关键字参数 —— 允许函数调用时参数的顺序与声明时不一致;
  • 缺省参数 —— 缺省参数的值如果没有传入,则被认为是默认值;
  • 不定长参数 —— 加了星号(*)的变量名会存放所有未命名的变量参数;
  • 匿名参数 —— 使用 lambda 来创建匿名函数;
  • return 语句 —— return语句退出函数,选择性地返回一个表达式。

 

 

Example:

'''Created on 2018年9月18日@author: McDelfino'''class Node:    def __init__(self, value):        self.value = value        self.next_node = None        n1 = Node(10)print(n1.value)n2 = Node(15)n1.next_node = n2print(n1.next_node.value)n3 = Node(11)n2.next_node = n3print(n1.next_node.next_node.value)class LinkedList:    def __init__(self, L = None, *, key = lambda x: x):        if not L:            self.head = None            return        self.key = key        self.head = Node(L[0])        current_node = self.head        for e in L[1: ]:            current_node.next_node = Node(e)            current_node = current_node.next_node         def display(self, separator = ', '):        E = []        current_node = self.head        while current_node:            E.append(current_node.value)            current_node = current_node.next_node        print(separator.join(str(e) for e in E))            def __len__(self):        if not self.head:            return 0        length = 0        current_node = self.head        while current_node.next_node:            length += 1            current_node = current_node.next_node        return length         def append(self, value):        new_node = Node(value)        if not self.head:            self.head = new_node            return        current_node = self.head        while current_node.next_node:            current_node = current_node.next_node        current_node.next_node = new_node        def insert_at_beginning(self, value):        new_node = Node(value)        if not self.head:            self.head = new_node            return        new_node.next_node = self.head        self.head = new_node        def insert_value_before(self, value_1, value_2):        if not self.head:            return False        if self.head.value == value_2:            new_node = Node(value_1)            new_node.next_node = self.head            self.head = new_node            return True        current_node = self.head        while current_node.next_node and\             current_node.next_node.value != value_2:            current_node = current_node.next_node        if current_node.next_node and\            current_node.next_node.value == value_2:            new_node = Node(value_1)            new_node.next_node = current_node.next_node            current_node.next_node = new_node            return True        return False            def is_sorted(self):        if len(self) < 2:            return True        current_node = self.head        while current_node.next_node:            if self.key(current_node.value) >\                self.key(current_node.next_node.value):                return False            current_node = current_node.next_node        return True        def reverse(self):        self.display()        if len(self) < 2:            return        current_node = self.head        while current_node.next_node.next_node:            current_node = current_node.next_node        last_node = current_node.next_node        current_node.next_node = None        self.reverse()        last_node.next_node = self.head        self.head = last_node        LL = LinkedList([1, 10, 4, 6])LL.display()print('--------------------')print(LL.is_sorted())LL.reverse()print('--------------------')LL.display()LL.display('---')LL.display()print(len(LL))LL.append(7)LL.display()LL.insert_at_beginning(23)LL.display()LL.insert_value_before(-10, 1)LL.display()LL.insert_value_before(63, 10)LL.display()print(LL.head.value)print(LL.head.next_node.value)print(LL.head.next_node.next_node.value)

 

转载地址:http://zxrja.baihongyu.com/

你可能感兴趣的文章
吃鸡蛋引发的血案,详解内存中的字节序
查看>>
【1139】数据结构上机测试2-2:单链表操作B (逆序建表+重复元素删除)
查看>>
C++ 内存管理之三(栈和堆)
查看>>
Windows7 64bit 安装python3.3 & cx_Freeze-4.3.2
查看>>
手写web服务器
查看>>
也谈 Python 的中文编码处理
查看>>
[LeetCode] LRU Cache
查看>>
OpenStack若干概念
查看>>
AttributeToElement
查看>>
php使用循环创建任意长度数组
查看>>
站立会议03
查看>>
POJ3068:"Shortest" pair of paths——题解
查看>>
上传本地文件到github(码云)上(小乌龟方式,sourcetree方式)
查看>>
微软Holographic将更名为Windows Mixed Reality
查看>>
豪情哥的忠告 能做到这一条就够用了
查看>>
精彩的javascript对象和数组混合相加
查看>>
Markdown介绍及工具推荐
查看>>
面向对象软件设计原则(一) —— 引子
查看>>
EaseType 缓动函数
查看>>
Unity VR全景漫游
查看>>