python学习笔记

python面向对象的学习

一串最基础的代码如下,注意类名最好大写,养成好习惯暴露下

class xingYuPing():
	# 通过init来构造方法,之后要多使用学习
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender
        self.test = "forever"
        
    def show_name(self):
        print(self.name)


if __name__ == "__main__":
    new_xing = xingYuPing('xingyuping', 12, "男")
    new_xing.show_name()

课本中学到的面向对象三大特性:封装/继承/多态
https://www.cnblogs.com/fzz9/p/8973315.html

封装

封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。

封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。

面相对象的不就是使用程序处理事情时以对象为中心去分析吗,与面向过程不同,面向过程关心处理的逻辑、流程等问题,而不关心事件主体。而面向对象即面向主体,所以我们在解决问题时应该先进行对象的封装(对象是封装类的实例,比如张三是人,人是一个封装类,张三只是对象中的一个实例、一个对象)。比如我们日常生活中的小兔子、小绵羊都可以封装为一个类。

下面展示一段简单的封装,我们平常做的是将功能封装到类,将数据封装到一个对象中

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age


obj_first_person = Person("ping", 22)
# 之后再想获取第一个人的信息是就直接调用这个对象,这样进行了封装

继承

继承是面向对象的基本特征之一,继承机制允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。类似下面这个图:
在这里插入图片描述
  我们在上面已经封装了兔子这个类,其他动物也一样可以进行封装。在封装过程中我们发现兔子、绵羊这两个类具有相似的功能或特性如吃草,所以我们可以抽取共有特征和方法形成高一层的类,如这里的食草动物、食肉动物。继承之间是子父类的关系。继承机制可以很好的描述一个类的生态,也提高了代码复用率,在Java中的Object类是所有类的超类,常称作上帝类。

学习代码如下

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def get_info(self):
        print(self.name, self.age)


# 之后再想获取第一个人的信息是就直接调用这个对象,这样进行了封装
obj_first_person = Person("ping", 22)


class FootballPerson(Person):
    def __init__(self, speed, name, age):
        # super继承
        super().__init__(name, age)
        self.speed = speed

    def get_speed_info(self):
        self.get_info()
        print(self.speed)


# 先在自己类找方法自己没有再去父类找
football_person = FootballPerson(23, "pingping", 22)
football_person.get_speed_info()

变态的多继承
在这里插入图片描述

多态

多态同一个行为具有多个不同表现形式或形态的能力。是指一个类实例(对象)的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
python自己就支持多态哈,很神奇,以为类别传进去是随便的

map的操作

判断key是否存在
if all_word_list[index + 1] in count_after_same_max_name_map.keys():
	count_after_same_max_name_map[all_word_list[index + 1]] += 1
else:
	count_after_same_max_name_map[all_word_list[index + 1]] = 1
对字典排序
count_after_same_max_name_map = sorted(count_after_same_max_name_map.items(), key=lambda x: x[1], reverse=False)
遍历key值
for key in name_cards.keys():
	print(key)
遍历value值
for value in name_cards.values():
	print(value)
遍历key&value
for key,value in name_cards.items():
	print(key,value)

数组的操作

遍历list
for index, word in enumerate(all_word_list):
	# 该方法可以遍历出index和每一项的值
	print index, word
for i in list:
	# 该方法只遍历值
    print i
for i in range(len(list)):
	# 与第一种相似
    print i, list[i]

学习随笔

对整篇文章只展现单词

通过正则表达式,将str输出成list

file = open('./4300-0.txt', encoding='utf-8')
all_word_str = file.read()
all_word_list = re.compile(r'\b[a-zA-Z]+\b', re.I).findall(all_word_str)
kwargs的使用

多参数的输入和使用

def learn_kwarge(**kwargs):
    print(kwargs['k2'])


if __name__ == "__main__":
    learn_kwarge(k1=1, k2=2)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值