python面向对象的含义_Python面向对象(一)

什么是对象?对象:独立性、功能性、交互性万物皆对象,均继承于Object类OOP:面向对象编程,本质含义在于复用代码,在较大规模或复杂项目中有用,提高写作产量面向对象和面向过程的对比编程实例

面向过程的程序解决方法:

面向对象:面向对象的3个特征:封装、继承、多态

封装:属性和方法的抽象继承:高级复用,几乎完全使用原有类属性与方法

多态:针对方法和方法灵活性的抽象;同一个名字的方法可以处理多种数据类型、多个不同参数

面向对象术语类Class 对象 Object

类是一种抽象,一般不使用类进行运算,通过类来生成对象进行运算。对象在面向对象编程中,相当于程序的变量。实例化就是从类到对象的过程。对象是根据模板【类】生成的实际的功能。

属性:存储数据的变量

方法:操作数据的函数

对象:类对象、实例对象类对象、实例对象其他术语

面向对象的练习实例如何用Class对象解决该问题?

class Product(): #定义类,保存名字和价格等信息

def __init__(self,name):

self.name = name

self.label_price = 0 # 初始值为0

self.real_price = 0

c = Product("电脑")

d = Product("打印机")

e = Product("投影仪")

c.label_price,c.real_price = 10000,8000

d.label_price,d.real_price = 2000,1000

e.label_price,e.real_price = 1500,900

s1,s2 = 0,0

for i in [c,d,e]:

s1+=i.label_price

s2+=i.real_price

print(s1,s2)OOP更易于理解

类的构建类,class。

类定义不限位置,可以包含在分支或其他丛书语句块中,执行时存在即可

其中,大写单词组合指首字母大写的组合。.__doc__访问类描述,doc前面为两个下划线。访问类描述类对象:默认在类定义完成后,默认生成类对象

实例对象:类最常用的使用方式类的构造函数:

1) 用于从类创建实例对象的过程

2)为实例对象提供了参数输入过程

3) 为实例对象的属性定义和赋值提供支持属性和方法是类对外交互的方式,是接口

类对象全局只有一个,实例对象可生成多个使用python解释器预定义的__init__()作为构造函数,可以为python对象提供参数。可以接收参数并完成初始操作。其中,self只在类内部使用。类属性:类对象的属性,所有实例对象所共享

实例属性:实例对象的属性,由各实例对象所独享

访问类属性,不管在类内还是类外,使用.访问;访问实例属性,在类内部,使用self.访问;在类外部,用.访问

类的方法方法是类内部定义的函数实例方法:最常用,形式如下,使用.访问实例方法。实例方法中,第一个参数必须是self

demo1:计算某人的幸运数字

访问实例属性,在类内部,使用self.访问;在类外部,用.访问。实例方法在类外部访问,采用.。

'''用来计算某人的幸运数字'''

class DemoLucky:

def __init__(self,name):

self.name = name

def Lucky(self):

s = 0

for c in self.name:

s+=ord(c)%100

return s

dc1 = DemoLucky("金榜")

dc2 = DemoLucky("岳阳")

print(dc1.Lucky())

print(dc2.Lucky())类方法:与类对象相关的函数,由所有实例对象共享

采用.()或者.()方式访问

至少包含一个参数,表示类对象本身,建议用cls

必须包含@classmethod作为装饰器

只能操作类属性和其他类方法,不能操作实例属性和实例方法demo2

'''classmethod使用'''

class demoClass:

count = 0

def __init__(self,name):

self.name = name

demoClass.count+=1

@classmethod

def getChrCount(cls):

s = "我爱我的祖国,我爱我的家乡"

return s[demoClass.count]

dc1 = demoClass("岳阳")

dc2 = demoClass("金榜")

print(demoClass.getChrCount())

print(dc1.getChrCount())自由方法:定义在类命名空间中的普通函数,采用.()方式访问,类名代表着对应的命名空间。

自由方法可以没有参数

只能操作类属性和类方法,不能操作实例属性和实例方法

只能使用访问demo3:

'''自由方法的学习'''

class demoStatic:

count = 0

def __init__(self,name):

self.name = name

demoStatic.count+=1

def foo():

demoStatic.count *= 100

return demoStatic.count

dc1 = demoStatic("岳阳")

dc2 = demoStatic("金榜")

# print(dc1.foo())

print(demoStatic.foo())

# print(dc2.foo())

# 注意:自由方法只能通过类名访问静态方法:能够被所有实例对象共享的类中普通函数,仅需要增加装饰器@staticmethod【属于自由方法】

可以用.()

仍然只能操作类属性和其他类方法,不能操作实例属性和实例方法【同样没有引入self参数】demo4:

'''静态方法的学习'''

class demoStatic:

count = 0

def __init__(self,name):

self.name = name

demoStatic.count+=1

@staticmethod

def foo():

demoStatic.count *= 100

return demoStatic.count

dc1 = demoStatic("岳阳")

dc2 = demoStatic("金榜")

print(dc1.foo())

print(demoStatic.foo())

print(dc2.foo())

# 结果为

200

20000

2000000保留方法:由双下划线开始、结束的方法,保留使用

# 其中,__len__()方法对应len()函数操作可理解为:

# 这是python解释器的保留方法,已对应好了,只需要编写代码即可

# 执行len(对象)代码时,解释器会去找对应类中有没有__len__()函数的重载,如果有,就可以返回正确的值

'''保留方法的学习'''

class DemoSave:

def __init__(self,name):

self.name = name

def __len__(self):

return len(self.name)

dc1 = DemoSave("yueyang")

dc2 = DemoSave("方金榜")

print(len(dc1))

print(len(dc2))

学习链接:Python学习嵩天老师 python面向对象精讲 侵删_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com

非常感谢up主分享给大家一起学习,共同进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值