zoukankan      html  css  js  c++  java
  • python使用笔记24--面向对象编程2

    类方法
      类里面自带的方法,不用实例化就可以调用,想象,模型上自带的功能
      类方法是公共的,在实例方法里面可以随意调用
      但是在类方法里不能调用实例方法,不能使用实例变量,但是他可以调用其他的类方法

    1 @classmethod
    2     def help(cls):#cls:Staff
    3         '''
    4         一些公共的方法,就用类方法
    5         类方法不能调用实例方法,不能调用实例变量
    6         '''
    7         print('这里的员工都是来自%s'%cls.nationnality)

    类变量
      类在定义好的时候,就把这个变量定义好了,也是公共的

    1 class Staff:
    2     '''员工类'''
    3     nationnality = 'China'#类变量,在定义类时,就已经在类里面了

    实例方法
      实例化后才能调用的方法
    实例变量
      实例化后才能调用的变量
    属性方法
      看起来像变量的函数

    1 class User:
    2     @property#属性方法
    3     def work_age(self):
    4         create_time = 1528860238
    5         return (time.time()-create_time) / (365*24*60*60)

    静态方法
      一个和类没有关系的方法,就是一个普通的方法,只是写在类里面而已
      不能调用实例方法,也不能调用类方法

     1 @staticmethod 2 def help(): 3 print('我是帮助文档,这个类时用户类') 

    继承

      子类继承父类公共的方法,也可以重写父类的方法

      父类的私有变量和私有方法不能继承

      重写:

        1.直接覆盖父类方法

        2.在父类的基础上添加新的功能

     1 class Car:
     2     def run(self):
     3         print('run...')
     4 
     5 
     6 class CcxCar(Car):
     7     def run(self):#重写,覆盖式的
     8         print('拐弯跑')
     9 
    10 class CmcCar(Car):
    11     def run(self):#重写,在父类方法的基础上做修改
    12         super().run()#super():自动找父类
    13         print('充电')

    魔法方法

      一个类里面有一些特殊作用的方法,不需要你调用,在一些情况下会自动运行

      类里面__funcname__都是魔法方法,有一些特殊作用,比如__init__()等等

    1 class Xxl:
    2     def __init__(self):
    3         self.name = 'xxl'
    4         self.sex = ''

    字典转对象

     1 class DictToObject(dict):
     2     '''字典转对象'''
     3     def __getattr__(self, item):
     4         #__getattr__的作用是通过x.xx的时候它会自动调用__getattr__这个方法,把你要获取的属性的key传过来
     5         #比如说 user.name ,它就是调用了__getattr__,把name传给__getattr__函数,然后返回这个name的值
     6         value = self[item]
     7         if isinstance(value,dict):
     8             value = DictToObject(value)#如果是字典类型,直接返回DictToObject这个类的对象
     9 
    10         elif isinstance(value,list) or isinstance(value,tuple):
    11             #如果是list,循环list判断里面的元素,如果里面的元素是字典,那么就把字典转成DictToObject的对象
    12             value = list(value)
    13             for index,obj in enumerate(value):
    14                 if isinstance(obj,dict):
    15                     value[index] = DictToObject(obj)
    16 
    17         return value
  • 相关阅读:
    Flex 布局语法教程
    2017年总结的前端文章——border属性的多方位应用和实现自适应三角形
    html 里 checkbox里 只要选中就会自动添加checked=“checked”么?
    jQuery遍历DOM
    checkbox 全选操作
    ubuntu下安装jdk
    ubuntu下安装nodejs
    nodejs express route 的用法
    聊天室业务分析
    一般使用场景
  • 原文地址:https://www.cnblogs.com/cjxxl1213/p/13121696.html
Copyright © 2011-2022 走看看