面向对象程序设计的3个特点 封装 继承 多态


“”"
@ 复习Python从入门到精通/明日科技编著(清华大学出版社)所记录的代码,个人记录不迷路。2023年1月30日
@ 面向对象程序设计的3个特点 封装 继承 多态
@ 类的__init__(self)方法第一个参数必须是self 类属性 实例属性
@ 访问限制:双下划线表示表示私有(private)类型成员,不允许类的实例进行访问,允许定义该方法的类本身对其进行访问或实例名._类名_xxx访问
@ 命名规则:类名(ClassName) 驼峰式命名 init(self)首尾双下划线一般表示定义特殊方法 __foo 双下划线表示私有类成员
@ @property 用此装饰器将方法转换为属性
“”"
“”"
类的创建语法
class ClassName:
statement
知识点: 双下划线表示表示私有(private)类型成员,不允许类的实例进行访问,只允许定义该方法的类本身对其进行访问;
__init__方法第一个参数必须是self参数

“”"

class StudentInfo:
# 类名各单词首字母大写
“”“学生信息”“”
number = 0
school_name = ‘江苏科技大学’
__health = ‘disease’ # 双下划线表示表示私有(private)类型成员,不允许类的实例进行访问,只允许定义该方法的类本身对其进行访问,

def __init__(self, name, age, gender, chinese_score, english_score):    # __init__方法第一个参数必须是self参数
    StudentInfo.number += 1
    self.chinese_score = chinese_score
    self.english_score = english_score
    print("我是一个学生实例", "姓名", name, end='')
    print("  年龄", age, "岁", end='')
    print("性别", gender, '语文成绩', self.chinese_score, '英语成绩', self.english_score)

def privateInfo(self):      # 方法名中第一个单词首字母小写,其余单词首字母大写
    print("健康状况", StudentInfo.__health, StudentInfo.school_name)

@property   # 用此装饰器将方法转换为属性
def score(self):
    return self.chinese_score + self.english_score, (self.chinese_score + self.english_score)/2

list1 = []
for i in range(2):
list1.append(StudentInfo(“李明” + str(i+1), 20, “男”, 80, 90))

print(“创建学生实例个数:”, StudentInfo.number)
print(“学校名称”, StudentInfo.school_name)
print(“健康状况”, list1[1]._StudentInfo__health) # 可以通过类的实例名._类名_xxx访问,无法通过实例名访问
list1[1].privateInfo() # 调用类的方法无需添加self参数

stu_01 = StudentInfo(“王雷”, 20, “男”, 80, 90)
print(stu_01)
print(‘通过类的方法调用类私有变量-学生健康状况’, end=‘’)
stu_01.privateInfo()
print(‘调用装饰器@property转换后的方法属性’, end=‘’)
print(stu_01.score)

“”"
从已有类(父类、超类、基类)中通过继承方式创建创建新类(子类、派生类)的过程。提供继承信息的类被称为父类(超类、基类);
类的继承语法
class ClassName(BaseClassName1, BaseClassName2, BaseClassName3):
statement
类的继承特点:
派生类中调用基类构造函数需要 super().init()
派生类中调用方法,首先查找派生类中是否有方法,接着查找上基类。调用基类的方法需要加上基类的类名。
派生类获得基类所有非私有方法、参数,对于基类私有方法,可以通过类的实例名._类名_xxx访问,无法通过实例名访问
“”"

class FemaleStudent(StudentInfo): # 类的继承,FemaleStudent类继承StudentInfo类信息
“”“类的帮助信息”“”
print(‘女学生派生类信息’)
school_name = ‘崇明女中’

def privateInfo(self):      # 方法重写
    print("健康状况", '女生很健康', FemaleStudent.school_name)

mary = FemaleStudent(“王芳”, 20, “女”, 100, 95)
print(mary.privateInfo()) # 正常输出外,输出none,啥原因?
print(mary.score)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值