Python 测开28期 - aileen - 学习笔记 - Python基础知识-面向对象知识学习_part1

面向对象编程

第一部分:类:类属性,方法:实例方法(构造方法和实例方法),类方法和静态方法。其中属性又包括类熟悉和实例属性
class Human(object):
‘’‘Human 类’‘’
#类属性
population = 0
message = ‘这是一个人’
#实例方法1:构造函数
def init(self, name, age):
self.name = name
self.age = age
print(f’这是一个实例方法’)
#实例方法2:成员函数
def instance(self):
print(f’这是一个实例方法’)

#类方法
@classmethod
def born(cls):
    print(f'这是一个类方法')
    cls.population = cls.population + 1
#静态方法
@staticmethod
def grow_up():
    print(f'这是一个静态方法')

#类的初始化
person = Human(“Harry Porter”, 18)
print(person.name, person.age)
#类属性的使用
print(person.population,person.message)
#实例方法的使用
person.instance()
#类方法的使用
Human.born()
print(Human.population)
#类静态方法的使用
Human.grow_up()

第二部分:封装
#普通属性,受保护属性,私有属性
class Account:
‘’‘封装方法学习类’‘’
#普通属性
bank = ‘BOC’
#受保护属性
_name = ‘hogwarts’
#私有属性
__password = 888
@property
def password(self):
return self.__password
@password.setter
def password(self, value):
if len(value) >= 8:
self.__password = value
else:
print(f’密码不能小于8位!')
obj = Account()
#普通属性的使用
print(obj.bank)
#受保护的属性,不建议这样使用
print(obj._name)
#访问私有属性
print(obj.password)
#使用不满足条件的数据,修改私有属性
obj.password = ‘Yang’
print(obj.password)
#使用满足条件的数据,修改私有属性
obj.password = ‘YangYang’
print(obj.password)

第三部分:类的继承
class Human:
‘’‘人类’‘’
#类的属性
message = ‘这是一个父类’
#构造函数
def init(self, name, age):
self.name = name
self.age = age

#实例方法
def live(self):
    print('住在地球上')

class Student(Human):
‘’‘学生类’‘’
def study(self):
print(‘正在学习’)

class Teacher(Human):
‘’‘教师类’‘’
def teach(self):
print(‘正在上课’)

#子类的初始化
stu = Student(‘哈利波特’, ‘18’)
#子类中可以访问父类的属性
print(stu.message)
#子类可以访问父类的实例属性
print(f’姓名和年龄是:', stu.name, stu.age)
#子类访问父类的实例方法
stu.live()
#子类访问子类的实例方法
stu.study()
#实例是否是类的实体,判断方法
print(‘stu是Human类的实例吗?’, isinstance(stu, Human))
#类是否是另一个类的子类,判断方法
print(‘Student:Human’, issubclass(Student, Human))
print(‘Student:Teacher’, issubclass(Student, Teacher))

#作业要求
#编写一个Python程序,创建一个几何图形计算程序,使用静态方法来计算矩形的面积和周长。
class Rectangle:
@staticmethod
def square_computer(length,width):
return lengthwidth
@staticmethod
def premiter_computer(length,width):
return 2
(length+width)

if name == “main”:
try:
length = int(input(“请输入矩形的长:”))
width = int(input(“请输入矩形的宽:”))
except Exception as err:
print(“矩形的长和宽输入错误,详细报错信息:”,err)
else:
print(f"矩形的面积计算为:{Rectangle.square_computer(length,width)}“)
print(f"矩形的周长计算为:{Rectangle.premiter_computer(length,width)}”)

备注:一般情况下,针对类中的工具方法,不使用类属性的访问则选择静态方法,不然选择类方法