zoukankan      html  css  js  c++  java
  • 知识点

    开始之前要知道Python类中两个概念:字段和方法

    “字段”和“方法”都有“动态”和“静态”之分,即:

      • 字段
        - 静态字段
        - 动态字段

      • 方法
        - 静态方法
        - 动态方法

    以下事例标明了:“静态字段”,“动态字段”以及“动态方法”是什么样子的,因为显而易见,就不用语言进行过多描述:

    #!/usr/bin/env python
    # _*_ coding: utf-8 _*_
    """
    @author: caimengzhi
    @license: (C) Copyright 2013-2017.
    @contact: 610658552@qq.com
    @software: pycharm 2017.02
    @project: luffy
    @file: 1.py
    @time: 2018/3/3 18:04
    @desc:
    """
    
    
    # class A:
    #     def __test(self):
    #         print("A.test")
    #
    #     def func(self):
    #         print("A.func")
    #         self.__test()
    #
    #
    # class B(A):
    #     def __test(self):
    #         print("B.test")
    #
    #
    # b = B()
    # b.func()
    
    
    # class A:
    #     def __test(self):
    #         print("A.test")
    #
    #     def func(self):
    #         print("A.func")
    #         self.__test()
    #
    #
    # class B(A):
    #     def __test(self):
    #         print("B.test")
    #
    #
    # b = B()
    # b.func()
    
    # class C:
    #     def __test(self):
    #         print("c.test")
    
    #
    # class A:
    #     def func(self):
    #         print("A.func")
    #         self.__test()
    #
    #
    # class B(C,A):
    #     def __test(self):
    #         print("B.test")
    #
    # b = B()
    # b.func()
    # print(B.__mro__)
    # (<class '__main__.B'>, <class '__main__.A'>, <class '__main__.C'>, <class 'object'>)
    
    
    # coding:utf-8
    
    # coding:utf-8
    
    class People:
        # 下面是静态字段
        city = "南京"
    
        def __init__(self, name, age, sex):
            # 下面是动态字段
            self.name = name
            self.age = age
            self.sex = sex
    
        # 下面是动态方法
        def say_hello(self):
            print("%s say hello" % self.name)
            print(self)
    
        # 下面是静态方法
        @staticmethod
        def sleep():
            print("sleep")
    
        # 下面是类方法
        @classmethod
        def eat(cls):
            print("eat")
            print(cls)
            
    xiaoming = People("小明", 20, "")  
    xiaoming.sleep()                    # 结果是 sleep
    xiaoming.say_hello()                # 结果是 小明 say hello <__main__.People object at 0x0000000000E0DEB8>
    print(xiaoming.city)                # 结果是 南京
    
    People.sleep()                      # 结果是 sleep  
    People.say_hello(xiaoming)          # 结果是 小明 say hello <__main__.People object at 0x0000000000E0DEB8>
    print(People.city)                  # 结果是 南京
    People.eat()                        # 结果是eat  <class '__main__.People'>
    xiaoming.eat()
    # 结果是eat <class '__main__.People'>
    
    
    其实“静态方法”只需要执行两步操作,就可以转换成“静态方法”
    1. 在方法前加上:@staticmethod
    2. 把“动态方法”括号中的“self”去掉

    那么关于这四种类型,有什么特点?以下进行总结:

    1. 四种类型,均可以被“对象”进行调用,但不建议使用“对象”调用“静态方法”和“静态字段”,而建议使用“类”对其进行调用
    2. “动态方法”和“动态字段”只能由“对象”进行调用,而无法使用“类”进行调用(因为动态的方法和字段都要传入参数)
  • 相关阅读:
    Spring MVC重定向和转发以及异常处理
    Spring MVC注解开发入门
    深入理解Spring MVC
    Spring MVC入门
    Spring Quartz实现任务调度
    Spring WebService入门
    Spring JavaMail发送邮件
    (一)Eureka 服务的注册与发现
    AvtiveMQ 参考
    python
  • 原文地址:https://www.cnblogs.com/caimengzhi/p/8507652.html
Copyright © 2011-2022 走看看