绑定方法:(绑定给谁就由谁来调用,谁来调用就会将谁当做第一个参数传入)
- 绑定对象的方法
类中定义的函数,函数体不加classmethod装饰器装饰的,都是默认绑定给对象的对象方法
语法:
def 方法名(self):
pass
- 绑定类的方法
类中函数在定义阶段,函数体上方加装饰器classmethod的,都是绑定给类的方法
语法:
@classmethod
def 方法名(cls):
pass
非绑定方法:
@staticmethod装饰装饰的方法
非绑定方法是 即不与类绑定,也不与对象绑定的方法,意味着对象与类都可以调用,无论谁来调用都是一个普通函数,没有自动传值效果。
应用:
import settings class MySql: def __init__(self, ip, port): self.id = self.create_id() self.ip = ip self.port = port def tell_info(self): print('<id:%s ip:%s port:%s>' % (self.id, self.ip, self.port)) @classmethod def from_conf(cls): return cls(settings.IP, settings.PORT) @staticmethod def create_id(): import uuid return uuid.uuid4() # obj1=MySql('1.1.1.1',3306) # obj1.tell_info() obj2 = MySql.from_conf() obj2.tell_info()
产生对象的名称空间:
class Student: def __init__(self, stu_name, sex): self.name = stu_name self.sex = sex # 通常建议参数名与新增的属性名同名 stu = Student('Bob', 'male') # 实例化对象 print(stu.name, stu.sex) ''' # __init__方法会在实例化对象时被调用 # 1.会为实例化的对象形成空的名称空间 # 2.就是一个方法,可以被传参,在 类名(实参) 这种方式下调用并传参 __init__(self, 形参) # 3.第一个self就是要产生的当前对象 # 重点:在方法内部,形参拿到了实参值,利用self.属性名 = 形参 = 实参值,对对象的名称空间添加属性