• 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
  • 相关阅读:
    Android_Spinner_example
    23.pyspider安装
    22.Windows及linux下gerapy使用
    21.scrapy爬虫部署
    12.利用kakatips对网站数据信息监控
    11.启信宝数据二次筛选解密(字符串的分割与拼接及正则匹配)-2
    10.Ubuntu操作系统及python2.7、3.5 exe
    9.数据库多表一起查询
    8.代理ip使用
    7.阿布云代理服务器试用
  • 原文地址:https://www.cnblogs.com/cjxxl1213/p/13121696.html
Copyright © 2020-2023  润新知