zoukankan      html  css  js  c++  java
  • Python基础(4):类

    类的定义

    定义类成员函数时,必须带有self参数,通过这个参数访问类的对象实例(object instance)。

    类的定义,其实就是定义了代码块。这个代码块中可以定义变量、函数,也可以定义语句。

    类的成员变量是public,使用双下划线开头命名的变量,为private类型(这只是一种convention,其实还是可以通过其它方式访问,Python中没有绝对的private访问控制)。

    在类中定义变量的时候,要区分:

    • class varialbe -- 在类中定义,被所有实例共享
    • instance variable -- 在类的初始化函数中定义

    下面两种调用方式是相同的:

    • dog.getcolor(d)
    • d.getcolor()

    >>> class dog:

             m_color = "red"

             def shout(self, words):

                       print("a dog is saying:", words)

             def setcolor(self, color):

                       self.m_color = color

             def getcolor(self):

                       print("color is:", self.m_color)                 

    >>> d = dog()

    >>> d.getcolor()

    color is: red

    >>> d.setcolor("yellow")

    >>> d.getcolor()

    color is: yellow

    >>>

    继承

    格式:class suclassname(superclassname)

    对 overrided 的函数,总是采用动态绑定的方式。如果要实现静态绑定调用,需要使用 name mangle 机制。

    如果多个超类中定义了相同的方法,先继承的那个类中定义的生效。

    >>> class homedog(dog):

             def shout(self, words):

                       print("it is a homedog")                 

    >>> hd = homedog()

    >>> hd.shout("home")

    it is a homedog

    >>>

    类相关函数

    Issubclass()

    Isinstance()

    Hasattr()

    Getattr()

    Setattr()

    Class.__bases__

    Class.__class__

    Class.__dict__

    >>> issubclass(homedog, dog)

    True

    >>> homedog.__bases__

    (<class '__main__.dog'>,)

    >>> isinstance(hd, homedog)

    True

    >>> hd.__class__

    <class '__main__.homedog'>

    >>> hasattr(d, "m_color")

    True

    >>> hasattr(d, "m_eye")

    False

    >>> getattr(d, "m_color")

    'red'

    >>> setattr(d, "m_color", "green")

    >>> getattr(d, "m_color")

    'green'

     Iterator

    class必须支持__iter__()函数,返回一个iterator对象,这个对象有next()方法。遇到结束时,返回异常 StopIterator。

    一种更快捷的支持iterator的办法是使用 yield,yield() 自动处理上面的函数,保存局部变量。
  • 相关阅读:
    PHP unset销毁变量并释放内存
    编码问题
    编程中关于对时区的理解(语言PHP)
    简单树结构的实现
    设计模式
    Selenium WebDriver +Python讲解
    PS入门基础-魔幻调色
    .NET Core、.NET Standard 、ASP.NET Core 和 .NET Framework 有什么不同?
    电商设计
    NPOI相关学习文档
  • 原文地址:https://www.cnblogs.com/weichsel/p/2379667.html
Copyright © 2011-2022 走看看