• 第四章 python中的面向对象设计


    一、首先来理解几个面向对象的关键特性:

    1、封装:对象可以将他们的内部状态隐藏起来。python中所有特性都是公开可用的。

    2、继承:一个类可以是一个或多个类的子类。python支持多重继承,使用时需要注意继承顺序。

    3、多态:实现将不同类型的类的对象进行同样对待的特性--不需要知道对象属于哪个类就能调用方法。

    二、创建自己的类

     1 >>> class Person:           
     2 ...     def setname(self,name):
     3 ...             self.name = name
     4 ...     def getname(self):
     5 ...             return self.name
     6 ... 
     7 >>> p = Person()
     8 >>> p.setname('darren')
     9 >>> p.getname()
    10 'darren'

    很简单吧,这里有个self参数需要说明的,可以称为对象自身,它总是作为对象方法的第一个参数隐式传入!那么类中的有些方法不想被外部访问怎么办?
    可以在方法前加双下划线,如下:

     1 >>> class Sercrt:
     2 ...     def greet(self):
     3 ...             print("hello,abc")
     4 ...     def __greet1(self):
     5 ...             print("i don't tell you ")
     6 ... 
     7 >>> s = Sercrt()
     8 >>> s.greet()
     9 hello,abc
    10 >>> s.__greet1()
    11 Traceback (most recent call last):
    12   File "<stdin>", line 1, in <module>
    13 AttributeError: Sercrt instance has no attribute '__greet1'

    如何指定超类呢?通过子类后面跟上括号里面写入基类即可实现。

     1 >>> class Bird:       
     2 ...     def fly(self):
     3 ...             print("I want to fly more and more higher")
     4 ... 
     5 >>> class Swallow(Bird):
     6 ...     def fly(self):
     7 ...             print("Swallow can fly")
     8 ... 
     9 >>> 
    10 >>> s = Swallow()    
    11 >>> s.fly()
    12 Swallow can fly

     1、构造方法:创建一个新对象时,调用构造方法,用于类的初始化

    python中用__init__()表示构造方法,当子类继承父类时,如果子类重写了构造方法,这时如果要继承父类的构造方法,需要用super(子类,self).__init__()

    2、属性:porperty(get,set)

    3、静态方法和类成员方法:这两种方法无需创建对象,直接通过类名称进行调用,如下:

     1 >>> class Myclass:
     2 ...     @staticmethod
     3 ...     def smeth():
     4 ...             print("i am static method")
     5 ...     @classmethod
     6 ...     def cmeth(cls):
     7 ...             print("i am class method")
     8 ... 
     9 >>> 
    10 >>> Myclass.smeth()
    11 i am static method
    12 >>> Myclass.cmeth()
    13 i am class method

          

  • 相关阅读:
    Windows下做7层软负载方案分析
    蛙蛙推荐:C语言入门之二——编写第一个有意义的小程序
    蛙蛙推荐:C语言入门之一——Linux下的C开发环境搭建小节
    蛙蛙推荐:动手做个网页游戏五子棋
    学习园地:微博项目
    com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field 异常 规格严格
    PostgreSQL Update 根据B表更新A表 规格严格
    SQL 删除重复数据[转] 规格严格
    ntoskrnl.exe占用cpu高 规格严格
    PostgreSQL中RECURSIVE递归查询使用总结[转] 规格严格
  • 原文地址:https://www.cnblogs.com/mysql-dba/p/4885158.html
Copyright © 2020-2023  润新知