• Python面向对象


    一、面向对象

      python本身就是一门面向对象的语言,面向对象的程序设计的核心是对象,首先要理解什么是对象。

      面向对象的优点:解决了程序的扩展性。

      面向对象的缺点:可控性差。

      1、面向对象的名词简介

        类(class):用来描述具有相同的属性和方法的对象的集合,他定义了该集合中每一个对象所共有的属性和方法,对象是类的实例;

        类变量:类变量在整个实例化的对象中是公用的。

        实例化:创建一个类的实例,类的具体对象。

        方法:类中定义的函数

        对象:通过类定义的数据结构实例;对象包括两个数据成员(类变量和实例变量)和方法

      2、类的语法:

    class  类名:
        属性 = a
    print(类名.属性)
    #类名的作用就是操作属性  查看属性

    类实例化后,可以使用其属性,实际上创建一个类之后,可以通过类名访问其属性。

      3、类对象

        类对象支持两种操作:属性引用和实例化。

        属性引用使用和 Python 中所有的属性引用一样的标准语法:obj.name

        类对象创建后,类命名空间中所有的命名都是有效属性名。所以如果类定义是这样:

        

    #!/usr/bin/python
    # -*- encodeing:utf-8 -*-
    class MyClass:
        """一个简单的类实例"""
        i = 12345
    
        def f(self):
            return 'hello world'
    print(MyClass.i)
    类定义

        很多类都倾向于将对象创建为有初始化状态的。因此类可能会定义一个名为__init__()的特殊方法,类的实例化操作会自动调用__init__()方法,__init__() 方法可以有参数,参数通过 __init__() 传递到类的实例化操作上,实例如下:

    #!/usr/bin/python
    # -*- encodeing:utf-8 -*-
    class Person():
        def __init__(self,*args):
            self.name = args[0]
            self.age = args[1]
            self.sex = args[2]
    ret = Person('小明',10,'')
    __init__

      4、self 代表类的实例,而不是类

        类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

    #!/usr/bin/python
    # -*- encodeing:utf-8 -*-
    
    class Test:
        def prt(self):
            print(self)
            print(self.__class__)
    
    
    t = Test()
    t.prt()
    View Code

      5、类的方法

        在类地内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。

    1 #! /usr/bin/python
      2 # -*- encodeing:utf-8 -*-
      3 class Dog:
      4         def __init__(self,*args):
      5                 self.name = args[0]
      6                 self.blood = args[1]
      7                 self.aggr = args[2]
      8                 self.kind = args[3]
      9         def bite(self,person):
     10                 person.blood -= self.aggr
     11                 if person.blood <= 0:
     12                         print('%s咬了%s,%s被咬死了'%(self.name,person.name,person.name))
     13                 else:
     14                         print('%s咬了%s,%s掉了%s血'%(self.name,person.name,person.name,self.aggr))
     15 class Person:
     16         def __init__(self,*args):
     17                 self.name = args[0]
     18                 self.blood = args[1]
     19                 self.aggr = args[2]
     20                 self.sex = args[3]
     21         def attack(self,dog):
     22                 dog.blood -= self.aggr
     23                 if dog.blood <= 0:
     24                         print('%s打了%s,%s被打死了'%(self.name,dog.name,dog.name))
     25                 else:
     26                         print('%s打了%s,%s掉了%s血'%(self.name,dog.name,dog.name,self.aggr))
     27 dog1 = Dog('旺财',100,80,'keddy')
     28 ren = Person('张三',200,130,'不详')
     29 dog1.bite(ren)
     30 ren.attack(dog1)
    人与狗实例
     

      

  • 相关阅读:
    【转】差分进化算法(DE)
    Cocos Creator 小游戏之找财神(上)
    浅析java线程池
    docker rocketMQ 详细 三分钟搞定 面试有这篇就够了
    docker nacos2.03 详细流程 5分钟搞定
    springboot+rocketmq 快速入门面试篇
    nacos集群 docker 有这一篇就够了,详细
    Ubuntu vi 命令使用详细说明
    idea实现json转JavaBean, 还得是fastjson
    docker nacos2.0.3 SQL语句
  • 原文地址:https://www.cnblogs.com/caoyf1992/p/8288828.html
Copyright © 2020-2023  润新知