python面向对象

本文介绍了面向对象编程的核心概念,包括类和对象的定义,类的属性(如手机的尺寸)和方法(如主板功能),以及类的继承机制。通过实例和代码展示了如何创建类、对象和调用方法。此外,还提到了私有属性和方法的使用及其安全性。
摘要由CSDN通过智能技术生成

若不想输给任何人,就得先认清自己的弱小。——《妖精的尾巴》


引入面向对象

主流的软件开发思想

  • 面向过程
  • 面向对象

例子(买电脑)

  • 面向过程:需要电脑、查询参数信息、横向比较机型、了解打折信息、与店家讨价还价、下单、收快递、开机验货、确认收货。面向过程就是整个过程自己一步一步写出来。

  • 面向对象:需要电脑、找秘书帮我买、收电脑。面向对象编程能够让你按照需求去找相应的模块,从而实现相应的功能。这种编程思想能够减少代码量,让代码更整洁。

面向对象就是一种编程思想。

面向对象讲解

面向对象编程的2个非常重要的概念:类和对象。

  • 类:抽象的,手机的设计图,用来描述特征信息以及功能等,不能实际使用。

  • 对象:具体的,根据类的描述创造出来的,可以实际使用。

类就相当于一个模板,对象是根据模板做出来的实际的东西。

类是一类事物,对象是事物的实现。

类(模板):

类中有属性和方法两个组成部分。

  • 属性(一般为赋值操作):描述信息,例如手机设计图中手机的长度或宽度。

  • 方法(函数):功能模块,例如手机设计图中主板的功能。

类的构成:

类由3部分构成。

  • 类的名称:类名

  • 类的属性:一组数据

  • 类的方法:功能模块的实现

案例:

1)人的设计

类的名称(类名):人(Person)
类的属性(一组数据):身高(height),年龄(age),性别(sex)
类的方法(功能模块的实现):跑(run)

 举例(电子设备):

手机
类名: Sj
属性: 品牌,颜色,价格
行为: 打电话
电脑
类名: Dn
属性: 外观,品牌,价格
行为:打游戏,写代码
Switch
类名:Switch
属性:型号,价格
行为:打游戏
PS5:
类名:PS5
属性:型号,价格
行为:打游戏

 用代码定义类:

固定格式:

class 类名:
	初始化函数(属性的定义一般在这里实现)
	方法列表

举例:

#class Person: #经典类(旧式类)定义
#class Person():

class Person(object): #新式类定义
	def __init__(self):
		self.height = 180
		self.age = 20
		self.sex = "男"
		
	def run(self):
		print("跑了2公里。")

说明:

1、为什么类名首字母要大写,类名规定要按”大驼峰命名法“,即首字母大写。

2、object是Python里所有类的最顶级类(涉及到后面类的继承)。

3、前两行注释的是经典类(旧式类)定义,后面的是新式类的定义。

4、__init__函数为初始化函数,类的属性一般定义在这里,如果没有定义属性,也可以不写这个函数,因为它默认会自己定义一个__init__函数,只不过里面没有属性。

5、每个函数后都有一个self参数,这表示这个函数是该类的方法。

6、属性名前面为什么要加上self.,因为这代表了这个属性是该类的属性。

创建对象:

构成:

对象名1 = 类名()
对象名2 = 类名()
对象名3 = 类名()

代码案例:

zhangsan = Person()
lisi = Person()
wangwu = Person()

完整代码:

class Person(object): #新式类定义
	def __init__(self):
		self.height = 180
		self.age = 20
		self.sex = "男"
		
	def run(self):
		print("跑了2公里。")
		
zhangsan = Person()
print(zhangsan.height) #对象调用类的属性
zhangsan.run() #对象调用类的方法
------------------------------------
#以下为运行结果
180
跑了2公里。

类的继承:

古代实行世袭制,有一位皇帝,将他的所有世袭给了他的儿子,这样他的儿子就有了这位皇帝的所有东西,以及他自己的所有东西,这位皇帝的儿子又将自己的所有世袭给了自己的儿子,即皇帝的孙子,那么这位皇帝的孙子就拥有了这位皇帝、他父亲以及他自己所有的东西。

|    拥有的东西
|
|皇帝(江山、兵法)          #皇帝打下了江山并写下了兵法
|
|
|儿子(江山、兵法+子民、政治政策)      #儿子拥有从父亲(皇帝)那继承的江山、兵法以及因为自己的政治治理所归附自己的子民和政治政策
|
|
|孙子(江山、兵法+子民、政治政策+金银、经济政策) #孙子拥有从父亲(儿子)那所继承的江山、兵法和子民、政治政策以及因为自己的经济政策所获得的金银和经济政策
|
|
v

代码举例:

class huangdi(object):  #object代表huangdi是顶级父类
	def __init__(self):
		self.jiangshan = "江山"
	
	def bingfa(self):
		print("兵法就是枪炮!")
		
class erzi(huangdi):  #erzi继承了huangdi这个类,huangdi是erzi的父类
	def __init__(self):
        super(erzi, self).__init__()
		self.zimin = "子民"
        
    def zhengzhizhengce(self):
        print("政治政策就是好的法律!")
        
class sunzi(huangdi):  #sunzi继承了erzi这个类,huangdi和erzi都是sunzi的父类
	def __init__(self):
        super(sunzi, self).__init__()
		self.jinyin = "金银"
        
    def zhengzhizhengce(self):
        print("经济政策就是好的商业头脑!")

属性与方法代码调用举例:

#实例化对象
A = huangdi()
B = erzi()
C = sunzi()

#对于A
print(A.jiangshan)
A.bingfa()
__________________________________________
#运行结果
"江山"
"兵法就是枪炮!"

#对于B
print(B.jiangshan)
print(B.zimin)
B.bingfa()
B.zhengzhizhengce()
__________________________________________
#运行结果
"江山"
"子民"
"兵法就是枪炮!"
"政治政策就是好的法律!"

#对于C
print(C.jiangshan)
print(C.zimin)
print(C.jinyin)
C.bingfa()
C.zhengzhizhengce()
C.jingjizhengce()
__________________________________________
#运行结果
"江山"
"子民"
"金银"
"兵法就是枪炮!"
"政治政策就是好的法律!"
"经济政策就是好的商业头脑!"

注意:

1、对于类来说如果子类与父类的属性或这方法重名,那么子类的属性或方法将覆盖掉父类的属性或方法。

2、super(sunzi, self).__init__()是什么,这是用来调用父类的构造函数(即初始化函数__init__),这样子类就拥有了父类的属性(当然还有其他的东西,构造函数中可不止能定义属性,还可以执行其他的代码例如执行一句print)。

类的私有属性与私有方法:

  • 类的私有属性与私有方法都不能通过对象直接访问,但可以在本类内部访问。

  • 类的私有属性与私有方法都不能被子类继承,子类也无法访问。

  • 私有属性与私有方通常用来处理类内部的事情,不能通过对象处理,起到安全作用。

私有属性与私有方法的案例:

在属性名和方法名前面加上两个下划线__,即为私有属性和私有方法。

  • 私有属性:self.__height

  • 私有方法:def __siyou(self):

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值