python面向对象

面向对象类

定义类

在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. 私有函数不可以被它的模块外部调用
  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()
方法重写

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AmHardy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值