过程到对象:面向过程代码过于复杂,且顺序无法修改,能能按逻辑顺序步步运行,可移植性差;面向对象则简化了程序,什么时候想用什么时候用,且便于移植,使得整个程序变得清晰明了
python中的实例与类相关操作:
1.实例方法:
self 代指实例。出现self的都是实例,且self可以用其他字符替换
self 代指实例。出现self的都是实例,且self可以用其他字符替换
最常用的实例方法
class Feng(): def __init__(self): self.name = 'fenghua' feng = Feng() print(feng.name)
2.静态方法( @ staticmethod):
不对任意实例类型进行操作,类对象以及实例(类名.静态方法名)都可以调用静态方法,相当于全局方法。
3.类方法( @ classmethod):
将类本身作为对象操作的方法(因为类方法是对类属性进行操作和修改的,语法一般为:cls.name等等)。参数cls代表类。
类对象以及实例(类名.静态方法名)都可以调用类方法 。 需要用修饰器
@classmethod
来标识其为类方法,对于类方法,第
一个参数必须是类对象。
class Feng: name="fenghua" @classmethod def getName(cls): return cls.name feng = Feng() print(feng.getName()) # 实例对象调用类方法 print(Feng.getName()) # 类对象调用类方法
类方法修改类属性:
class Feng: name="fenghua" @classmethod def getName(cls): return cls.name @classmethod def setName(cls, set_name): cls.name = set_name return cls.name feng = Feng() print(feng.getName()) # 实例对象调用类方法 print(Feng.getName()) # 类对象调用类方法 Feng.setName('bobo') print(feng.getName()) # 实例对象调用类方法 print(Feng.getName()) # 类对象调用类方法 feng.setName('fenglaoda') print(feng.getName()) # 实例对象调用类方法 print(Feng.getName()) # 类对象调用类方法
实例方法和
类方法的区别:
①实例方法要先实例化一个对象,再调用实例化方法,类方法用类名.类方法就可以直接调用
②实例方法的参数self里面就是实例本身,类方法的参数cls里面就是类本身
③实例属性对实例方法可见,类方法没有对应属性
④类属性被类对象和实例对象共有
⑤实例对象a = People() a.name 类对象People.name
⑥实例属性只能被实例对象调用,类对象不能拥有(重点)
⑦实例属性可以放在构造方法中:__init__(self,实例属性)
①实例方法要先实例化一个对象,再调用实例化方法,类方法用类名.类方法就可以直接调用
②实例方法的参数self里面就是实例本身,类方法的参数cls里面就是类本身
③实例属性对实例方法可见,类方法没有对应属性
④类属性被类对象和实例对象共有
⑤实例对象a = People() a.name 类对象People.name
⑥实例属性只能被实例对象调用,类对象不能拥有(重点)
⑦实例属性可以放在构造方法中:__init__(self,实例属性)