一.绑定方法与非绑定方法

1.绑定方法
'''
   绑定方法:绑定给谁就是给谁用的

    1.凡是类中的方法和函数,都是绑定给对象使用的;

    2.绑定方法都有自动传值的功能。传递进去的值,就是对象本身。

    3.如果类想调用绑定方法,就必须遵循函数的参数规则,有几个参数,就必须传递几个参数。

绑定到对象的方法:
定义:凡是在类中定义的函数(没有被任何装饰器修饰),都是绑定给对象的,
给谁用:给对象用
特点:obj.bar() 自动把obj当做第一个参数传入,因为bar中的逻辑就是要处理obj
绑定到类的方法:
定义:在类中定义的,被@classmethod装饰的函数就是绑定到类的方法
给谁用:给类用
特点:类.class_method() 自动把类当做第一个参数传入,因为class_method中的逻辑就是要处理类
'''
class People:
def __init__(self,name):
self.name=name
def bar(self):
print('--->',self.name) @classmethod
def func(cls): --------->绑定类的方法,默认为cls
print(cls)
f=People('egon')
# print(People.func) ####绑定给类
# print(f.bar) ####绑定给对象的 # People.func() # f.func()
#####绑定类的方法

class MySQL:
def __init__(self,ip,port):
self.ip=ip
self.port=port @classmethod ---->绑定到类的方法方便我们直接产生MYSQL对象,以
def from_conf(cls): #便于我们设置相应的条件来控制
import settings ##settings.py文件里存放IP与地址
obj=cls(settings.ip,settings.port) #obj=MySQL('1.1.1.1',)
obj.x=
return obj # m=MySQL('127.0.0.1',) obj=MySQL.from_conf() print(obj.ip)
print(obj.port)
print(obj.x)

  2.非绑定方法

  非绑定方法就是一个函数,就是一个工具而已,不需要类,也不需要对象,没有自动传值这么一说.

  在面向对象中实现,就是 @staticmethod

import hashlib
import time
import pickle
import os
student_path=r'C:\Users\Administrator\PycharmProjects\python5期\day22\student' class People:
def __init__(self,name,sex,user_id):
self.name=name
self.sex=sex
self.user_id=user_id
self.id = self.create_id() def tell_info(self):
print('''
--------%s info--------
id:%s
name:%s
sex:%s
user_id:%s
''' %(self.name,self.id,self.name,self.sex,self.user_id)) def create_id(self):
m=hashlib.md5()
m.update(self.name.encode('utf-8'))
m.update(self.sex.encode('utf-8'))
m.update(str(self.user_id).encode('utf-8'))
return m.hexdigest() def save(self):
with open(self.id,'wb') as f:
pickle.dump(self,f) @staticmethod #非绑定方法,就是一个函数,就是一个工具而已,不需要类,也不需对象
def get_all():
res = os.listdir(student_path)
for item in res:
file_path=r'%s\%s' %(student_path,item)
with open(file_path,'rb') as f:
obj=pickle.load(f)
obj.tell_info() # print(People.get_all)
#
# p=People('egon','male',)
# print(p.get_all)

  

python 绑定方法的更多相关文章

  1. Python绑定方法,未绑定方法,类方法,实例方法,静态方法

    >>> class foo(): clssvar=[1,2] def __init__(self): self.instance=[1,2,3] def hehe(self): pr ...

  2. Python绑定方法与非绑定方法

    绑定方法 绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 绑定到类的方法:用classmethod装饰器装饰的方法,类在使用时会将类本身当做参数传给类方法的第一个参数(即便是对象来调 ...

  3. Python 绑定方法与非绑定方法

    用到的: import uuid  --------------  uuid是128位的全局唯一标识符, 通常用32位的一个字符串的形式来表现 uuid.uuid1()  -------------  ...

  4. python 类的绑定方法和非绑定方法

    一.绑定方法 1.对象的绑定方法 首先我们明确一个知识点,凡是类中的方法或函数,默认情况下都是绑定给对象使用的.下面,我们通过实例,来慢慢解析绑定方法的应用. class People: def __ ...

  5. python 面向对象之多态与绑定方法

    多态与多态性 一,多态 1,多态指的是一类事物有多种形态(python里面原生多态) 1.1动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.AB ...

  6. python 3全栈开发-面向对象之绑定方法(classmethod与staticmethod的区别)、多态、封装的特性property

    一.面向对象绑定方法 一.类中定义的函数分成两大类 1.绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 1. 绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定制 ...

  7. python中类与对象及其绑定方法的定义

    面向对象编程 什么是面向对象? 面向过程:将需要解决的问题按步骤划分,一步一步完成每一个步骤,而且          步骤之间有联系. 优点:复杂问题可以分步完成 缺点:扩展性很差,维护性差.如果中间 ...

  8. 1.面向过程编程 2.面向对象编程 3.类和对象 4.python 创建类和对象 如何使用对象 5.属性的查找顺序 6.初始化函数 7.绑定方法 与非绑定方法

    1.面向过程编程 面向过程:一种编程思想在编写代码时 要时刻想着过程这个两个字过程指的是什么? 解决问题的步骤 流程,即第一步干什么 第二步干什么,其目的是将一个复杂的问题,拆分为若干的小的问题,按照 ...

  9. python 3 属性查找与绑定方法

    1.属性查找 类有两种属性:数据属性和函数属性 (1)类的数据属性是所有对象共享的 #类的数据属性是所有对象共享的,id都一样 class OldboyStudent: school='oldboy' ...

随机推荐

  1. MySQL ERROR 1698 (28000): Access denied for user 'root'@'localhost'

    今天在安装MySQL的过程中竟然没有让我输入密码,登录的时候也不需要密码就能进入,这让我很困惑. 进了数据库就设置密码,用了各种方式都不行. 虽然我这数据库没啥东西但也不能没有密码就裸奔啊,有点丢人是 ...

  2. opencv学习之路(33)、SIFT特征点提取(一)

    一.简介 二.OpenCV中的SIFT算法接口 #include "opencv2/opencv.hpp" #include <opencv2/nonfree/nonfree ...

  3. 【Django模板006】

    在前面的几节中我们都是用简单的django.HttpResponse来把内容显示到网页上,本节将讲解如何使用渲染模板的方法来显示内容. 1.创建一个zqxt_tmpl项目,和一个名称为learn的应用 ...

  4. java @Service 引入什么包

    maven中加入 <dependency> <groupId>org.springframework</groupId> <artifactId>spr ...

  5. cv2.getRotationMatrix2D函数

  6. Java学习笔记_ 数据库隔离级别和事务传播行为

    转自: https://blog.csdn.net/qq_38545713/article/details/79779265 一:数据库的事物隔离级别与传播行为总结:              很多人 ...

  7. laravel文件上传

    一.视图文件代码 <td> <input type="file" name="brand_logo" id="logo" ...

  8. Nginx 安装及配置、负载均衡https网站及转发后页面js、css等路径找不到问题、更换证书导致问题解决

    官网下载nginx:http://nginx.org/en/download.html 安装nginx编译环境:yum install -y gcc-c++ 安装pcre库解析正则:yum insta ...

  9. 他山之石,calling by share——python中既不是传址也不是传值

    事情是这样的,Python里是传址还是传值令人疑惑,限于本人没有C基础,所以对大家的各类水平层次不一的解答难以确信. 第一个阶段: 在读<python基础教程第二版>的时候感到疑惑,然后群 ...

  10. .Net Core 管道中的ConfigureServices 和Configure

    ConfigureServices    就是配置服务器的DI容器 把需要的中间件等一些东西添加到DI容器   最后都是添加到IServiceCollection里面 比如 services.AddI ...