python-007 _面向对象及面向过程

一:面向对象和面向过程的区别
"""
面向对象以事物为中心,整个过程都是在思考参与整个事情的具体事务,而整个事件只是这些事物能够完成的一项功能
面向过程:以事件为中心,核心是需要明白完成某一件事需要划分的步骤
注意:面向过程比面向对象开发难度高
"""
"""
面向对象的核心:类和对象
类:具有相同特征和行为的一类事物的抽象
对象:由类具体化出的实例(世间万物皆对象)
"""
#1、Python中类的创建
class Person:
# init方法--初始化方法,作用是:在使用类初始化实例对象时,由实例对象调用,在该方法中一般完成对对象属性的设置
def __init__(self, *, name, age, sex):
self.name = name
self.sex = sex
self.age = age
#自定义函数--完成对类别功能的添加
def sayHello(self):
print('hello')


#通过类创建实例:通过对象访问属性或方法的操作方式 对象.属性(方法)
per = Person(name='殷旭东', sex='男', age=23)
per1 = per
per1.name = '二胖'
print(per.name)
per.sayHello()
#修改属性的透明度
class Student:
# 对象属性如果不想让外界随意访问,此时可以在属性名的前面添加__,此时属性只能在当前类或子类中访问,外界无法随意访问
def __init__(self, *, name, age, sex, id):
self.name = name
self.__age = age
self.sex = sex
self.__id = id
self.__school = "蓝鸥科技"
#setter和getter方法:根据对象的属性,为属性添加setter和getter方法,此时通过setter或getter方法对对象属性灵活开放对应的操作权限
# getter
@property
def id(self):
return self.__id

#setter
@id.setter
def id(self, id):
if type(id) is int:
self.__id = id
else:
print('类型不匹配,无法完成修改')

@property
def age(self):
return self.__age

@age.setter
def age(self, value):
if value >= 0 and value <= 120 and type(value) is int:
self.__age = value
else:
print('年龄数据不合法,请重新输入')


stu = Student(name='殷旭东', sex='男', age=23, id=222)
print(stu.id)
stu.id = '333'
print(stu.id)

print(stu.age)
stu.age = 150
print(stu.age)

"""
@property直接修饰一个属性名对应的方法,作用是为对应的属性添加getter方法,允许外界获取对应属性的值
@属性名.setter修饰一个和属性名相同的方法,作用是为对应属性添加setter方法,允许外界在修改属性值时,对一些不合法的数据进行过滤操作
"""
"""
面向对象的三大特性:
封装,继承,多态
"""
class Person:
def __init__(self, **kwargs):
self.name = kwargs.get('name')
self.sex = kwargs.get('sex')
self.__age = kwargs.get('age')

@property
def age(self):
return self.__age

@age.setter
def age(self, value):
if value >= 0 and value <= 120 and type(value) == int:
self.__age = value
else:
print('数据不合法')

#自我介绍
def introduce(self):
print('我叫{0},今年{1}岁,性别{2}'.format(self.name, self.age, self.sex))

"""
继承的作用:子类通过继承可以继承父类所有的特征和行为,使用继承可以有效减少子类的代码量,利于进行代码的维护
"""
class Student(Person):
"""
super父类的一个标志位
super()--函数调用的方式,用在初始化或实例化方法中,用来在子类初始化操作中按照父类的初始化方法来构建子类对象,或者在实例化方法中调用父类的实例化方法
"""
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.__id = kwargs.get('id')
self.major = kwargs.get('major')

@property
def id(self):
return self.__id

#定义函数完成自我介绍
def introduce(self):
super().introduce()
print('学号{0},专业{1}'.format(self.id, self.major))

stu = Student(name='殷旭东', sex='男', age=23, major='计算机', id=222)
print(stu.name)
stu.age = 50
print(stu.age)
stu.introduce()






 
 

猜你喜欢

转载自www.cnblogs.com/t-a-n-g-124798/p/11252943.html