• Python----面向对象---绑定方法与非绑定方法的应用


    1、绑定到对象的方法的应用

     1 class People:
     2     def __init__(self, name, age, sex):
     3         self.name = name
     4         self.age = age
     5         self.sex = sex
     6 
     7     def tell_info(self):  # 绑定到对象的方法
     8         print('Name:%s Age:%s Sex:%s' % (self.name, self.age, self.sex))
     9 
    10 p = People('egon', 18, 'male')
    11 p.tell_info()  # tell_info(p)
    12 
    13 结果为:
    14 
    15 Name:egon Age:18 Sex:male

    绑定给对象,就应该由对象来调用,自动将对象本身当做第一个参数传入

    2、绑定给类,就应该由类来调用,自动将类本身当做第一个参数传入

     1 import setting
     2 
     3 class People:
     4     def __init__(self, name, age, sex):
     5         self.name = name
     6         self.age = age
     7         self.sex = sex
     8 
     9     def tell_info(self):  # 绑定到对象的方法
    10         print('Name:%s Age:%s Sex:%s' % (self.name, self.age, self.sex))
    11 
    12     @classmethod
    13     def from_conf(cls):
    14         obj = cls(
    15             setting.name,
    16             setting.age,
    17             setting.sex
    18         )
    19         return obj
    20 
    21 # p = People('egon', 18, 'male')
    22 # p.tell_info()  # tell_info(p)
    23 p = People.from_conf()
    24 p.tell_info()
    25 
    26 结果为:
    27 
    28 Name:xudachen Age:18 Sex:male

    3、非绑定方法

     1 import setting
     2 import hashlib
     3 import time
     4 
     5 class People:
     6     def __init__(self, name, age, sex):
     7         self.id = self.create_id()
     8         self.name = name
     9         self.age = age
    10         self.sex = sex
    11 
    12     def tell_info(self):  # 绑定到对象的方法
    13         print('Name:%s Age:%s Sex:%s' % (self.name, self.age, self.sex))
    14 
    15     @classmethod
    16     def from_conf(cls):
    17         obj = cls(
    18             setting.name,
    19             setting.age,
    20             setting.sex
    21         )
    22         return obj
    23 
    24     @staticmethod
    25     def create_id():
    26         m = hashlib.md5(str(time.time()).encode('utf-8'))
    27         return m.hexdigest()
    28 
    29 # p = People('egon', 18, 'male')
    30 # p.tell_info()  # tell_info(p)
    31 # p = People.from_conf()
    32 # p.tell_info()
    33 
    34 p1 = People('xudachen1', 18, 'male')
    35 p2 = People('xudachen2', 28, 'male')
    36 p3 = People('xudachen3', 38, 'male')
    37 
    38 print(p1.id)
    39 print(p2.id)
    40 print(p3.id)
    41 
    42 结果为:
    43 
    44 1dadcd98fe26e278ce864c2f0cf2e753
    45 bc09cd38527ef257fa3158d4e342ea1b
    46 bc09cd38527ef257fa3158d4e342ea1b

    非绑定方法,不与类或者对象绑定,谁都可以调用,没有自动传值一说

  • 相关阅读:
    全栈项目搭建 ------- express
    全栈项目搭建 ------- mysql
    全栈项目搭建 ------- pm2
    基于mysql+node+vue-ssr+webpack全栈项目搭建
    前端技能2020
    项目线上地址汇总2020
    实现一个脚手架
    下载漏洞
    java学习笔记(13-接口、final、多态)
    java学习笔记(12-继承、抽象类)
  • 原文地址:https://www.cnblogs.com/xudachen/p/8622888.html
Copyright © 2020-2023  润新知