zoukankan      html  css  js  c++  java
  • python之面向对象

    object类是一个超类,是所有类的父类。                      pass表示类里面什么都不没有是个空类。

    类拥有3种行为2种属性:  ①静态方法  ②类方法  ③实例方法。                             ①类属性  ②实例属性。

    实例对象可以调用这3种方法,类名则不能调用实例方法。

    类定义:类名首字母必须大写,

    # coding=utf-8
    class A:        # 第一种简写方式
        pass
    
    
    class B(object):    # 第二种方式()里面写上继承的父类,默认写上object
        pass
    类定义

    静态方法:需要用@staticmethod修饰,使用类名调用。和类方法区别在于不能使用cls。

    # coding=utf-8
    class A(object):
        @staticmethod         # 静态方式必须用static修饰
        def fun1():               # 函数定义
            print("类里面的静态方法")
    
    
    A.fun1()
    静态方法

    类方法:需要用@classmethod修饰,使用类名调用。cls可以访问类的所有属性,cls看做类方法的额外属性。

    # coding=utf-8
    class A(object):
        @classmethod
        def fun1(cls):
            print("类方法")
    
    
    A.fun1()
    类方法

     实例方法:必须有一个额外的参数,一般为self可以修改但不推荐,代表类的实例,self可以访问当前实例的所有属性。实例方法只能使用对象调用。

    # coding=utf-8
    class A(object):
        def fun1(self):
            print("实例方法")
    
    
    a = A()       # 创建实例对象
    a.fun1()
    实例方法

    类属性: 直接定义在类里面的属性或者使用cls动态添加的属性。类属性被所有实例共享。实例修改类属性,只不过是创建了一个同名的实例属性,没有真正修改类属性。

    class A(object):
        a = 10     # 直接定义在类里面
    类属性

    实例属性:每个实例单独存在的属性。①在类的构造函数里面定义。②在实例中创建。

    # coding=utf-8
    class A(object):
        def __init__(self):     # self代表当前实例
            self.a = 10         # 第一种定义实例属性
            print("构造函数")
    
    
    s = A()
    s.b = 20                    # 第二种定义实例属性
    print(s.a, s.b)
    实例属性

    构造函数:前后__init__双下划线。创建对象时候会自动调用构造函数,如果没有声明构造函数,会自动调用父类构造函数,其他情况下都不会调用父类构造函数,即使是继承。构造函数属于实例方法。

    # coding=utf-8
    class A(object):
        def __init__(self):  # 构造函数
            print("构造函数")
    
    
    a = A()             # 创建对象
    构造函数__init__

     创建对象:对象名 = 类名(),当类的构造函数,有形参时,需要传递实参,self这个额外参数忽略看做this即可

    a = A()             # 创建对象  a是变量  A是类名
    创建实例对象

     继承:如果实例化子类对象时候,子类没有提供构造函数就会自动调用父类的构造函数。子类一般情况下不会自动调用父类的构造函数,需要手动调用,子类调用父类,①直接使用类名调用②super关键字调用。python不存在二义性问题,使用的就近原则。issubclass()函数判断一个类是不是另一个类的子类。

    类的私有属性:类的私有属性使用双下划线_ _开头。不能直接用类名访问(系统就是把下划线开头的变量名字改变了,所以访问不了,可以使用另一种方式访问,就用它改变后的名字)。

  • 相关阅读:
    Kafka Replication: The case for MirrorMaker 2.0
    CentOs7.3 搭建 SolrCloud 集群服务
    Redis 集群:CLUSTERDOWN The cluster is down
    Redis Cluster: (error) MOVED
    Kafka重启出错:Corrupt index found
    redis cluster slots数量 为何是16384(2的14次方)
    redis监控工具汇总
    Redis运维利器 -- RedisManager
    redis三种集群策略
    Deploy custom service on non hadoop node with Apache Ambari
  • 原文地址:https://www.cnblogs.com/PrideAssassin/p/11544270.html
Copyright © 2011-2022 走看看