093 类和对象的绑定方法和非绑定方法
Posted xuchengnotes
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了093 类和对象的绑定方法和非绑定方法相关的知识,希望对你有一定的参考价值。
类中定义的方法大致可以分为两类:绑定方法和非绑定方法。其中绑定方法又可以分为绑定到对象的方法和绑定到类的方法。
一、绑定方法
对象的绑定方法/类的绑定方法
1.1 对象的绑定方法
在类中没有被任何装饰器修饰的方法就是 绑定到对象的方法,这类方法专门为对象定制。
通常说的绑定方法都是对象的绑定方法,因为类创建时默认就是对象的绑定方法。
当对象调用时,不需要传递第一个参数。
1.2 类的绑定方法
类中使用 @classmethod 修饰的方法就是绑定到类的方法。这类方法专门为类定制。通过类名调用绑定到类的方法时,会将类本身当做参数传给类方法的第一个参数。
类的绑定方法,也可以由对象来调
class Person:
def __init__(self,name,age):
print(self)
self.name=name
self.age=age
@classmethod # 使用 @classmethod 装饰器,变为类的绑定方法
def test(cls):
print(cls)
print('类的绑定方法')
#类实例化产生对象,返回
return cls('lqz',19)
# 使用类绑定方法
per1=Person.test()
# 通过对象调用类绑定方法
per2=Person('xc',18)
per2.test()
1.3 类的绑定方法用在什么地方?
不需要通过对象,只需要通过类就能完成某些事的时候,就把该方法定义为类的绑定方法
二、非绑定方法(静态方法)
在类内部使用 @staticmethod 修饰的方法即为非绑定方法,这类方法和普通定义的函数没有区别,不与类或对象绑定,谁都可以调用,且没有自动传值的效果。
静态方法不属于任何人的绑定方法,就是个普通函数。但是别人一样可以使用
class Person:
def __init__(self,name, age):
self.id=self.get_uuid()
self.name = name
self.age = age
#当成一个普通函数,只不过是写在类内部的
@staticmethod
def static_method():
print('我是静态方法,谁都不绑定')
@staticmethod
# 生成一个唯一的id号
def get_uuid():
import uuid
return uuid.uuid4()
# 类来调用静态方法
Person.static_method()
# 对象来调用静态方法
p=Person('xc',19)
p.static_method()
2.1 非绑定方法用在什么地方?
当这个方法,跟类和对象都没有关系的时候,可以定义成静态方法,一般在类内部使用,类外部也可以使用
就是一个普通函数,想把它拿到类中管理,就可以定义成静态方法
以上是关于093 类和对象的绑定方法和非绑定方法的主要内容,如果未能解决你的问题,请参考以下文章