首页 > > > Python面向对象(一)





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

面向对象:



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




class Product(): #定义类,保存名字和价格等信息
def __init__(self,name):
self.name = name
self.label_price = # 初始值为0
self.real_price =
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 = ,
for i in [c,d,e]:
s1+=i.label_price
s2+=i.real_price
print(s1,s2)
类定义不限位置,可以包含在分支或其他丛书语句块中,执行时存在即可

其中,大写单词组合指首字母大写的组合。<类名>.__doc__访问类描述,doc前面为两个下划线。


1) 用于从类创建实例对象的过程
2)为实例对象提供了参数输入过程
3) 为实例对象的属性定义和赋值提供支持






访问实例属性,在类内部,使用self.<属性名>访问;在类外部,用<对象名>.<属性名>访问。实例方法在类外部访问,采用<对象名>.<方法名>。
'''
用来计算某人的幸运数字
'''
class DemoLucky:
def __init__(self,name):
self.name = name
def Lucky(self):
s =
for c in self.name:
s+=ord(c)%100
return s
dc1 = DemoLucky("金榜")
dc2 = DemoLucky("岳阳")
print(dc1.Lucky())
print(dc2.Lucky())
采用<类名>.<方法名>(<参数列表>)或者<对象名>.<方法名>(<参数列表>)方式访问
至少包含一个参数,表示类对象本身,建议用cls
必须包含@classmethod作为装饰器
只能操作类属性和其他类方法,不能操作实例属性和实例方法

'''
classmethod使用
'''
class demoClass:
count =
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())
自由方法可以没有参数
只能操作类属性和类方法,不能操作实例属性和实例方法
只能使用<类名>访问

'''
自由方法的学习
'''
class demoStatic:
count =
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())
# 注意:自由方法只能通过类名访问
可以用<类名/对象名>.<方法>(<参数列表>)
仍然只能操作类属性和其他类方法,不能操作实例属性和实例方法【同样没有引入self参数】

'''
静态方法的学习
'''
class demoStatic:
count =
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))来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/36/viewspace-3156472/ ,如需转载,请注明出处,否则将追究法律责任。