Python面向对象案例汇总
简介Python是一门面向对象的语言,用这种思想为指导设计的程序,把数据和对数据的 *** 作封装在一起组成类,通过类来创建对象,通过对象之间的交互来实现程序的功能。
class FirstClass:
pass
if __name__ == '__main__':
c = FirstClass()
print(c)
#结果
<__main__.FirstClass object at 0x0000022128E17F70>
定义个学生类(仅属性)
class Student:
# 构造方法(初始化),这里传入name和age两个参数
def __init__(self,name,age):
self.name=name
self.age=age
if __name__ == '__main__':
s = Student('沈亮',30);
#显示对象内存地址
print(s)
# 访问对象里的name和age属性
print("{}您的年龄是:{}岁".format(s.name,s.age))
#结果
<__main__.Student object at 0x0000022C7CAF7700>
沈亮您的年龄是:30岁
定义个学生类(属性及方法)
class Student:
# 构造方法(初始化),这里传入name和age两个参数
def __init__(self,name,age):
self.name=name
self.age=age
def sayInfo(self): #通过对象里的方法访问name和age属性
print("{}您的年龄是:{}岁".format(s.name, s.age))
if __name__ == '__main__':
s = Student('沈亮',30);
#显示对象内存地址
print(s)
# 访问对象方法
s.sayInfo()
#结果
<__main__.Student object at 0x000001C7F6A47700>
沈亮您的年龄是:30岁
方法内嵌套类
#方法里嵌套Converter类,如果该对象不存在则创建,最终函数通过Converter对象里的convert方法返回(完成分数和等级的转换)
def score2level(score,converter=None):
class Converter:
def convert(self,score):
level='C'
if score>=80:
level='A'
elif 60
计算二维平面里点到点距离
import math
class Point:
#初始化点的坐标,默认在原点(即x=0,y=0)
def __init__(self,x=0,y=0):
self.move(x,y)
#设置点的坐标为(x,y)
def move(self,x,y):
self.x=x
self.y=y
#将点的坐标重置到(0,0)
def reset(self):
self.move(0,0)
#计算两点之间的距离(勾股定理)
def calculateDistance(self,otherPoint):
return math.sqrt(pow((self.x-otherPoint.x),2)+pow((self.y-otherPoint.y),2))
if __name__ == '__main__':
point1 = Point(3,0)
point2 = Point(0,4)
#计算点point1和点point2的距离
print(point1.calculateDistance(point2))
#计算点point3=的横坐标x、纵坐标y
point3=Point(4,6)
print(point3.x, point3.y)
#重置点point3,即作为为坐标原点
point3.reset()
print(point3.x,point3.y)
#结果
5.0
4 6
0 0
私有属性及私有方法
class Student:
# 构造方法(初始化),这里传入name、age、__level三个参数,其中__level是私有属性
def __init__(self,name,age,level):
self.name=name
self.age=age
self.__level=level
def sayInfo(self): #通过对象里的方法访问name和age属性
print("{}您的年龄是:{}岁".format(self.name, self.age))
#定义私有方法
def __getLevel(self):
print("{}您的等级是:{}".format(self.name, self._Student__level))
if __name__ == '__main__':
s= Student('ShenLiang',25,'A')
#访问私有方法时,需要加_类名__方法名
s._Student__getLevel()
#结果
ShenLiang您的等级是:A
查看对象的自定义属性及其值
class Student:
# 构造方法(初始化),这里传入name、age、__level三个参数,其中__level是私有属性
def __init__(self,name,age,level):
self.name=name
self.age=age
self.__level=level
def sayInfo(self): #通过对象里的方法访问name和age属性
print("{}您的年龄是:{}岁".format(self.name, self.age))
#定义私有方法
def __getLevel(self):
print("{}您的等级是:{}".format(self.name, self._Student__level))
if __name__ == '__main__':
s= Student('ShenLiang',25,'A')
# 输出类里用户自定义的属性、方法
print([v for v in dir(s) if not v.startswith('__')])
# 输出对象里用户自定义的属性及其值
for item in vars(s):
print(item,":",vars(s)[item])
#结果
['_Student__getLevel', '_Student__level', 'age', 'name', 'sayInfo']
name : ShenLiang
age : 25
_Student__level : A
类变量及类方法的使用
class Student:
cnt =0
# 初始化方法
def __init__(self,name,score,level):
self.name = name
self.score = score
self.__level = level
Student.cnt +=1
def sayScore(self): #对象方法 *** 作对象属性
print("{0}\t的分数是:{1}".format(self.name,self.__level))
def __getLevel(self): #私有方法的定义
print("{0}当前的等级是:".format(self.name,self.__level))
@classmethod #类方法 *** 作类属性
def printCnt(cls):
print(cls.cnt)
if __name__ == '__main__':
s1=Student('Shenliang',30,'A')
s2=Student('Liangshen',20,'B')
print('当前学生数:\t',Student.cnt)
print("对象方式调用:") #s1和s2对象调结果都是2
s1.printCnt() #s2.printCnt()
#结果
当前学生数: 2
对象方式调用:
2
静态变量的使用
class Student:
cnt =0
# 初始化方法
def __init__(self,name,score,level):
self.name = name
self.score = score
self.__level = level
Student.cnt +=1
def sayScore(self): #对象方法 *** 作对象属性
print("{0}\t的分数是:{1}".format(self.name,self.__level))
def __getLevel(self): #私有方法的定义
print("{0}当前的等级是:".format(self.name,self.__level))
@classmethod #类方法 *** 作类属性
def printCnt(cls):
print(cls.cnt)
@staticmethod
def add(a,b):
return(a+b)
if __name__ == '__main__':
s1=Student('Shenliang',30,'A')
s2=Student('Liangshen',20,'B')
print('两数相加的结果是:\t',Student.add(20,30))
注:静态方法不可以 *** 作对象实例属性及方法。
属性装饰器
class Student:
cnt =0
# 初始化方法
def __init__(self,name,score,level):
self.name = name
self.score = score
self.__level = level
Student.cnt +=1
def sayScore(self): #对象方法 *** 作对象属性
print("{0}\t的分数是:{1}".format(self.name,self.__level))
def __getLevel(self): #私有方法的定义
print("{0}当前的等级是:".format(self.name,self.__level))
@property
def level(self):
return self.__level
if __name__ == '__main__':
s1=Student('Shenliang',30,'C')
print("{0}您的等级是{1}".format(s1.name,s1.level))
#结果
Shenliang您的等级是C
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)