栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python源码中的学习笔记

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python源码中的学习笔记

封装
#
# 主题:封装
#

# 面向对象的三大特征
'''
封装:提高程序的安全性
    # 将数据(即属性)和行为(即方法)包装到类对象中。在方法内部对属性进行操作,在类对象的外部调用方法。
        这样,无序关心方法内部的具体实现细节,从而脱离了复杂度
    # 在 python 中没有专门的修饰符用于属性的私有,若该属性不希望在类对象外被访问,则在前面加两个"_"
继承:提高代码的复用性
多态:提高程序的可扩展型和可维护性
'''

class Student:
    def __init__(self, name, age):
        self.name = name
        self.__age = age            # age 只能在类的内部使用

    def show(self):
        print(self.name, self.__age)

if __name__ == '__main__':
    stu = Student('张三', 20)
    stu.show()                      # 张三 20
    # print(stu.__age)              # 报错,age 是 Student 类中的内部使用的属性,不能再类外直接访问

    # dir 内置函数查看实例对象的属性和方法
    print(dir(stu))

    # 在类外访问那些只能在类内访问的属性
    print(stu._Student__age)        # 20

继承
#
# 主题:继承
#

# 若一个类没有继承任何类,则默认继承 object
# python 支持多继承
# 定义子类时,必须在其构造函数中调用父类的构造函数

# 定义父类
class Person(object):               # 任何自定义类默认继承 object。object 可以不写
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def info(self):
        print('姓名:{0},年龄:{1}'.format(self.name, self.age))

# 定义子类
class Student(Person):      # Student 继承了 Person
    def __init__(self, name, age, score):
        super().__init__(name, age)     # super 函数调用父类
        self.score = score

class Teacher(Person):
    def __init__(self, name, age, teachOfYear):
        super().__init__(name, age)     # 调用父类的方法
        self.teachOfYear = teachOfYear

if __name__ == '__main__':
    stu = Student('Jack', 20, '1001')
    stu.info()              # 姓名:Jack,年龄:20

    teacher = Teacher('李四', 34, 10)
    teacher.info()          # 姓名:李四,年龄:34

    # 多继承
    class A(object):
        pass

    class B(object):
        pass

    class D(A, B):      # D 类继承了 A 类和 B 类
        pass
方法重写
#
# 主题:方法重写
#

# 若子类对继承自父类的某属性或方法不满意,可以在子类中其进行重新编写
# 子类重写后的方法中可以通过 super().xxx() 调用父类中被重写的方法

# 定义父类
class Person(object):               # 任何自定义类默认继承 object。object 可以不写
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def info(self):
        print('姓名:{0},年龄:{1}'.format(self.name, self.age))

# 定义子类
class Student(Person):      # Student 继承了 Person
    def __init__(self, name, age, score):
        super().__init__(name, age)     # super 函数调用父类
        self.score = score

    def info(self):
        # 调用父类方法(若不调用,则实例对象的姓名和年龄不会输出)
        super().info()

        # 方法重写
        print(self.score)

class Teacher(Person):
    def __init__(self, name, age, teachOfYear):
        super().__init__(name, age)     # 调用父类的方法
        self.teachOfYear = teachOfYear

if __name__ == '__main__':
    stu = Student('Jack', 20, '1001')
    stu.info()              # 姓名:Jack,年龄:20
                            # 1001
                            # 子类 Student 重写了方法 info
object 类
#
# 主题:object 类
#

'''
object 类是所有类的父类,因此所有类都有 object 类的属性和方法。
内置函数 dir 可以查看指定对象的所有属性
Object 有一个 __str__() 方法,用于返回一个对于“对象的描述”,对应于内置函数 str()
    经常用于 print 方法,帮我们查看对象的信息,所以我们经常对 __str__() 进行重写
'''

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return '我的名字是{0},今年{1}岁'.format(self.name, self.age)

if __name__ == '__main__':
    stu = Student('张三', 20)
    print(dir(stu))
    print(stu)          # 若对 __str__ 重写,则返回 我的名字是张三,今年20岁
                        # 若没有对 __str__ 重写,则返回 <__main__.Student object at 0x0000026109D20978>
                        # 输出的是对象的地址
    print(type(stu))    # 

在这里插入代码片
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/304309.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号