zoukankan      html  css  js  c++  java
  • python基础笔记(非系统/自用/参考小甲鱼的零基础入门学习python)下

    31.定义一个类:  class class_name:      创建对象: 对象名 = class_name()  继承:   class class_name2(parent_classname):

                 属性、方法                                  pass #空语句用来维持代码结构

    32.python的self关键字相当于java的this,使用:将self作为方法的第一个参数

    __init__(self,参数1,2,3,...):相当于构造方法,使用:

    私有:在python中定义私有变量只需要在变量或函数名前加“__”两个下划线,那么这个函数或变量就为私有的

    由于name为私有,故直接访问是不允许的,但python的私有是伪私有,可以用:对象名._类名__属性来访问,eg: p._Peason__name --> '小甲鱼'

    super([指定父类名可有可无])函数:用来调用父类的方法,使用eg:super().__init__(self) #调用父类的构造方法

    python支持多继承,语法:class child_class_name(parent1,parent2,...) #尽量别用,容易乱

    组合:

    注意:如果类的属性和方法名相同,属性会覆盖方法

    在创建类的时候,不要试图在一个类里面定义出所有能想到的特性和方法,应该利用继承和组合机制来进行扩展;

    用不同的词性来命名,如属性名用名词,方法名用动词

     32.绑定:python严格要求方法需要有实例才能被调用;由于对象调用自己的绑定方法,会自动将对象当作第一个参数传递进去,所以,当类中方法没有带参数时,而又给它传递了一个,显然是会报错的。反之,直接用类来调用方法时,则不会将自己作为参数传递进去,当方法有self参数时(self参数必须放在第一个参数位),用类名调用方法则会报错

    ==>   

    类中定义的属性和方法是静态的,当程序结束才会被释放,所以在大多数情况下应该考虑用self属性,def set属性(sefl,cs1,cs2...):   self.sx1 = cs1  self.sx2 = cs2  

     类属性通常用来跟踪与类相关的值

    33.一些相关的BIF:

    issubclass(class,classinfo):用来判断classinfo是否为class的子类,classinfo可以是由类对象组成的元组,只要class与其中任何一个候选类的子类,则返回true

    isinstance(object,classinfo):用来判断对象是否为classinfo的实例对象,如果第一个参数不是object对象类型,它就只返回false,如果第二个参数不是类或类对象组成的元组,会抛出一个TypeError异常

    hasattr(object,'属性'):用来判断对象中是否有string这个属性(用字符串表示)

    getattr(object,'属性',[提示语]):用来获取对象存在的属性

    setattr(object,'属性',value):用来给属性赋值

    delattr(object,'属性'):用来删除对象中指定的属性(非删除类的属性),如果属性不存在则抛出AttributeError异常

     property(fget = None,fset = None, fdel = None,doc = None):用属性设置属性,参数分别为获取属性方法、设置属性方法、删除属性方法

    ==>==>

    34.魔法方法 :__xxx__,能够在适当的时候被自动调用

     __new__(class,参数1234..):创建对象第一个执行的魔法方法

     

     __init__(self)的返回值一定是None,若试图让__init__有返回值则会报错

    __del__(self):垃圾回收机制会调用的方法,当类的对象生成以后,所有对象的引用被del消除后才调用__del__方法

    35. 控制属性访问的魔法方法(系统和用户在赋值、删除和获取的时候系统会自动调用这些方法)

    __getattr__(self,name)  -定义当用户试图获取一个不存在的属性时的行为 

    __getattribute__(self,name) -定义当该类的属性被访问时的行为,比__getattr__先

    __setattr__(self,name,value) -定义当一个属性被设置时的行为

    __delattr__(self,name) -定义当一个属性被删除时的行为

    36.描述符:将某种特殊的类型的类的实例指派给另一个类的属性

     特殊类型:要实现一下三个方法其中一个-->

    __get__(self,instance,owner) -用于访问属性,它返回属性的值

    __set__(self,instance,value) -将在属性分配操作中调用,不返回任何内容

    __delete__(self,instance) -控制删除操作,不返回任何内容

    对于Test类,MyDecriptor类就是Test的描述符类

    37.容器类型的协议:

    如果希望定制的容器是不可变的话,只需要定义__len__()和__getitem__()方法

    如果希望定制的容器是可变的的,除了__len__()和__getitem__()方法,还需要定义__setitem__()和__delitem()两个方法

    38.迭代器两个BIF,iter()--对应的魔法方法->__iter__()返回迭代器本身、next()---->__next__()-->决定了迭代器的规则

    当没有元素时就会抛出一个StopIteration的异常

  • 相关阅读:
    链表操作
    建立简单的链表
    scanf()函数用法小结
    快速求某年某月是第几天(未整理)
    合并两个有序数组(未整理)
    如何配置JAVA的环境变量、Tomcat环境变量
    【动态规划】流水作业调度问题与Johnson法则
    分治法(二)
    分治法(一)
    HTML5入门十一---Canvas画布实现画图(二)
  • 原文地址:https://www.cnblogs.com/hachiman/p/9689378.html
Copyright © 2011-2022 走看看