python面向对象

系统 1737 0

面向对象类

定义类

在python中,将具有相同属性和方法的对象归为一个类,在使用类之前,首先得创建类
类创建的语法:

            
              class 类名:
	语句

            
          

类的用法

类只有在实例化才能使用,类的调用和函数的调用差不多,用类名()就可以实例化类

类对象

类实例化就生成了一个对象,它支持两种操作

  1. 属性的引用
  2. 实例化

类方法

定义类的方法和定义函数差不多,区别如下:

  1. 方法的第一个参数必须是self,而且不能省略
  2. 方法的调用必须先实例化该类,用实例名.方法名(参数)来调用

构造方法

构造函数就是类实例化初始化数据, init ()方法就是构造方法

            
              class person:
	"""人类"""
	def __init__(self,name,age):
		"""初始化名字和年龄"""
		self.name=name
		self.age=age
	def talking(self):
		print(self.name.title()+"叫了你一声")
	def playball(self):
		print(str(self.age)+"的"+self.name+"正在打球")

            
          

python面向对象_第1张图片

类可以创建多个实例,通过 实例名=类() 来创建的,类就是一个抽象的具有相同属性,功能的模板,可以创建很多实例

私有方法

python中私有属性,方法,完全取决于它的名字,名字 以__开始 的就是私有属性或者方法,当类的内部调用用 . 来调用私有属性
私有函数,属性,方法有以下特点:

  1. 私有函数不可以被它的 模块外部调用
  2. 私有方法不能从 类的外部 调用
  3. 私有属性不能从 类的外部被访问

析构方法

python中析构方法是__del__(),当调用del()内置对象删除是会调用它本身的析构函数__del__(),当某个对象调用完毕后,也会调用一次析构函数来释放资源,例如:下面是我对堆和栈的理解,再加上类的析构函数, 希望多多指教
小朋友手上只能抓住三个气球,他拿着三个气球。气球本身就是一个对象,而手上的线就是对象的引用,当小朋友放开手中的线,那么对象就没有得到引用,气球就飞掉了,就是小朋友手中少抓了一个气球,小朋友可以轻松一点,也就是我们说的释放资源,自己调用了__del__()对象

静态方法和类方法

  1. 实例方法:隐含调用的参数是类的实例
  2. 类方法:隐含调用的参数是类,定义类方法使用 装饰器@classmethod 必须有默认参数cls
  3. 静态方法:没有隐含调用参数,定义静态方法使用 修饰符@staticmethod 进行修饰,没有默认参数

在调用类方法和静态方法时,可以使用 类名进行调用 ,在调用前无须实例化,也 可以通过实例来进行调用

类的专有方法

  1. new ():是在实例创建之前被调用的,用于创建实例
  2. init ():构造函数,在生成实例之后调用
  3. del ():析构函数,在释放资源时调用
  4. repr ():打印,转换
  5. setitem ():按照索引赋值
  6. getitem ():按照索引获取值
  7. len ():获得长度
  8. cmp ():比较运算
  9. call ():函数调用
  10. add ():加运算
  11. sub ():减运算
  12. mul ():乘运算
  13. div ():除运算
  14. mod ():求余运算
  15. pow ():乘法

类属性

在类中将属性分为实例属性和类属性

  1. 实例属性:同一个类的不同实例,值没有关联,使用self.属性定义和调用
  2. 类属性: 同一个类所有实例共用的 ,在类中独立定义,使用类名.类变量名引用,只要一个实例发生改变其他实例也会发生改变

修改属性值

python中有两种方法来修改属性值:

  1. 直接通过实例来修改

    实例.属性=值

  2. 通过自定义方法修改

    通过自定义更新值,自定义增加值来修改值

私有属性

私有属性通过__属性名定义的,只能类内部访问,类外部访问会提示找不到相关属性或者方法

严格意义上来说在类的外面也可以调用私有属性,只是难以处理,python中没有真正的私有

继承

类的继承是新建的类获取已有的类的属性,方法,变量等,继承的类可以称为派生类或者子类,被继承的类称为基类或者父类

定义子类

            
              class 子类(父类):
	语句

            
          

多继承

子类可以获取父类的特性,子类可以继承多个父类用 隔开,比如父类的方法名一样,那么按顺序继承
子类调用父类的方法可以用super()函数

            
              多继承
class 子类(父类,父类):
	语句

            
          
            
              子类方法:
	super().方法

            
          

子类也可以定义自己的属性和方法,子类也可以被继承,父类的私有属性和方法不能被继承,但是可以被子类重写

            
              class a:
	def __init()__(self,name):
		self.__name=”小包“
		self.age=18
class b(a):
	def sayname(self):
		print (self.__name)
X=b()
X.sayname()

            
          

方法重写

就是方法名和父类的方法名一样,就可以把父类的方法改成子类的方法


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论