首页 > 编程语言 >Python学习笔记(一)

Python学习笔记(一)

时间:2023-10-22 20:44:06浏览次数:28  
标签:__ .__ Python self 笔记 学习 print type class

Python中一切皆对象,函数和类也是对象,属于Python的一等公民。

  1. 对象可以赋值给一个变量
  2. 对象可以添加到集合对象中
  3. 对象可以作为参数传递给函数
  4. 对象可以当做函数的返回值

对象的三个特征:1、身份(id());2、类型;3、值

type->int>1

type>class->obj

object是最顶层基类

type也是一个类,同时type也是对象

a = 1  
b = "abc"
print(type(1))   #  <class 'int'>
print(type(int)) #  <class 'type'>
print(type(b))   # <class 'str'>
print(type(str))  # <class 'type'>

class Student(object):
    pass

class MyStudent(Student):
    pass

stu = Student()

print(type(stu))  # <class '__main__.Student'>
print(type(Student))  # <class 'type'>
print(int.__bases__)  $ (<class 'object'>,)
print(str.__bases__)  # (<class 'object'>,)
print(Student.__bases__)  # (<class 'object'>,)
print(MyStudent.__bases__)  # (<class '__main__.Student'>,)
print(type.__bases__)  # (<class 'object'>,)
print(object.__bases__)  # ()
print(type(object))  # (<class 'object'>,)
print(type(type))  # <class 'type'>

def aa():
    pass
print(aa.__class__)  # <class 'function'>
print(type(aa.__class__)) # <class 'type'>

Python中常见的内置类型:

  • None(全局只有一个)
  • 数值迭代类型
    • int
    • float
    • complex
    • bool
  • 序列类型映射(dict)
    • list
    • bytes、bytearray、memoryview(二进制序列)
    • range
    • tuple
    • str
    • array
  • 集合上下文管理类型(with)
    • set
    • frozenset
  • 其它
    • 模块类型
    • class和实例
    • 函数类型
    • 方法类型
    • 代码类型
    • object对象
    • type类型
    • ellipsis类型
    • notimplemented类型

魔法函数(魔法方法)的存在是为了被 Python 解释器调用的,你自己并不需要调用它们。魔方方法增强了自定义类的功能,使开发者能够直接使用原生的方法扩充自定义类。


鸭子类型也是Python这种动态语言的一种特性,在鸭子类型中,关注的不是对象的类型本身,而是它是如何使用的。

class Cat(object):
    def say(self):
        print("i am a cat")
class Dog(object):
    def say(self):
        print("i am a dog")
class Duck(object):
    def say(self):
        print("i am a duck")

animal_list = [Cat, Duck, Dog]
for animal in animal_list:
    animal().say()

i am a cat
i am a duck
i am a dog

抽象基类用途: 1、判定某个对象的类型(instance()方法);2、强制某个子类必须实现某些方法。

实例方法可由实例调用,但类也可以调用(不推荐),需要手动给 self 参数传值。类方法实例(不推荐)与类都可以调用。静态方法可由实例与类调用。

私有变量可以使用_类名__变量名调用,私有变量使用这种小技巧起到保护作用。

自省是通过一定的机制查询到对象的内部机构,Python提供了__dict__这个魔法方法去查询对象属性,该方法以字典形式的返回值展示出对象内部的属性与值。同时Python还提供了dir()方法,该方法以列表形式放回对象支持的所有属性。

 

class User(object):
    def __init__(self, age):
        self.__age = age

    def get_age(self):
        return self.__age

if __name__ == '__main__':
    user = User(30)
    print(user.__dict__)
    print(dir(user))

{'_User__age': 30}
['_User__age', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'get_age'] 

多继承关系时,super()函数调用顺序是按照__mro__方法返回的顺序去依次调用的。在Python中多继承推荐使用Mixin模式,该模式有以下特点:1、Mixin类功能单一;2、不和基类关联,可以和任意基类组合,基类可以不和Mixin关联就能初始化成功;3、在Mixin中不要使用super这种用法。

 


上下文管理器协议,关键魔法方法:__enter__、__exit__,当然使用contextlib提供的装饰器结合生成器函数也可实现上下文管理协议

class Sample(object):
    def __enter__(self):
        # 获取资源
        print("enter")
        return self  # 获取资源后返回

    def __exit__(self, exc_type, exc_val, exc_tb):
        # 释放资源
        print("exit")

    def do_something(self):
        print("doing something")


with Sample() as sample:
    sample.do_something()

enter
doing something
exit
import contextlib


@contextlib.contextmanager
def file_open(filename):
    print("file open")
    yield
    print("file end")


with file_open("test.txt") as f_opened:
    print("file processing")

file open
file processing
file end

 

标签:__,.__,Python,self,笔记,学习,print,type,class
From: https://www.cnblogs.com/wsmbszyn/p/17780639.html

相关文章

  • Python Web之Django
    一、环境需求1、OS:Windows102、IDE:PyCharm2019.23、Interpreter:Python3.7 二、项目搭建1、构建Django工程,打开PyCharm,点击【File】==》【NewProject...】==》【Django】。 2、项目工程保存路径、工程名称、解释器选择,点击【Create】创建项目工程,如下图所示:  ......
  • 学习笔记6
    一、任务详情自学教材第3章,提交学习笔记(10分),评分标准如下知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:“......
  • 20211316郭佳昊 《信息安全系统设计与实现(上)》 第七周学习总结
    一、任务要求[1]知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题核心是要求GPT:请你以苏格拉底的方式对我进行提问然后GPT就会......
  • 20211314王艺达学习笔记6
    Unix/Linux进程管理进程是Unix操作系统抽象概念中最基本的一种。进程管理是所有操作系统的心脏所在。一、进程进程是处于执行期的程序。除了可执行程序代码,还包括打开的文件、挂起的信号、内核内部数据、一个或者多个执行线程等多种资源线程是在进程活动中的对象;内核调度的......
  • 2023-2024-1 20231405 《计算机基础与程序设计》第四周学习总结
    2023-2024-120231405《计算机基础与程序设计》第四周学习总结作业信息作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP作业要求在哪里https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/13009作业的目标自学《计算机科......
  • 2023-2024-1 20211211 第三章学习笔记
    一、多任务处理多任务处理指的是同时进行几个独立活动的能力在单处理器(单CPU)系统中,一次只能执行一个任务。而多任务处理是通过在不同任务之间多路复用CPU的执行时间来实现的,即将CPU执行操作从一个任务切换到另一个任务。不同任务之间的执行切换机制称为上下文切换,将一个任务的......
  • 《信息安全系统设计与实现》第七周学习笔记
    一、课程内容第十一章学习1、多任务处理指的是同时进行几项独立活动的能力逻辑并行性称为“并发”2、进程操作系统是一个多任务处系统在操作系统中,任务也称为进程。在第2章中,我们把执行映像定义为包含执行代码、数据和堆栈的存储区。定义一个PROC结构体:next:指向下一个P......
  • 第三章Unix/Linux进程管理—学习笔记六
    〇.本章思维导图1.最近刚好操作系统也学习到进程相关部分,因此再看这些知识更易懂了2.思维导图3.本章简介本章讨论了Unix/inux中的进程管理;阐述了多任务处理原则;介绍了进程概念;并以一个编程示例来说明多任务处理、上下文切换和进程处理的各种原则和方法。多任务处理系统......
  • python系列教程216——何时使用列表解析
    声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值......
  • 2023-2024-1 20231302 《计算机基础与程序设计》第4周学习总结
    作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第4周作业这个作业的目标门电路,组合电路,逻辑电路,冯诺依曼结构,CPU,内存,IO管理,嵌入式系统,并行结构,物理安全作业正文https://www.cnblogs.com/9q2......