python面向对象1

过程到对象:面向过程代码过于复杂,且顺序无法修改,能能按逻辑顺序步步运行,可移植性差;面向对象则简化了程序,什么时候想用什么时候用,且便于移植,使得整个程序变得清晰明了

python中的实例与类相关操作:
1.实例方法:
   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,那么通过self引用的可能是类属性、也有可能是实例属性(这个需要具体分析),不过在存在相同名称的类属性和实例属性的情况下,实例属性 优先级更高。

猜你喜欢

转载自blog.csdn.net/weixin_31449201/article/details/79974386