美文网首页
Python:初识

Python:初识

作者: 春暖花已开 | 来源:发表于2020-08-18 22:14 被阅读0次
继承关系
#! /usr/bin/python3

# 继承自object的叫新式类,否则称之为经典类(旧式类)
# Python3中,没有继承自object的类,默认也会继承自object;但Python2则不会
# 为了兼容性考虑,建议继承自object
class Animal(object):

    # 类属性
    count = 0

    # 初始化的时候调用
    def __init__(self, name):

        # 用统计实例对象的个数
        #可以用 `类名.count` 或 `实例instance.count` 来访问
        # 但赋值必须是 `类名.count = xx` 的这种方式
        Animal.count += 1

        # 添加公开属性
        self.name = name
        # 添加私有属性
        self.__sex = 'male'

    # 该方法可以在打印对象时调用
    def __str__(self):
        return "该动物是 %s" %self.name

    # 类方法,要用`@classmethod`标记
    @classmethod
    def showInstanceNum(cls):
        print("当前实例的个数是 %d" %Animal.count)

    # 私有属性和方法,是不能被外界和子类访问到的
    # 可以通过创建公开方法的方式去获取
    def getSex(self):
        return self.__sex

    # 方法的第一个参数,一定要传self
    def bark(self):
        print("动物叫")
        
class Dog(Animal):
    """继承自Animal的Dog类:额外增加寿命属性"""

    def __init__(self, name, age, color="white"):
        # 调用父类的初始化方法
        super().__init__(name)
        self.age = age
        self.color = color

    def __str__(self):
        return "狗狗的名字是 %s ,它的年龄是 %d 岁,颜色是 %s" %(self.name, self.age, self.color)

    # 重写父类的方法
    def bark(self):
        # 有需要的话,可以通过 `super()` 调用父类的实现
        super().bark()
        print("汪汪")

animal = Animal("野兽")
dog = Dog("旺财", 8, "black")

animal.bark()

dog.bark()

# 狗狗的名字是 旺财 ,它的年龄是 8 岁,颜色是 black
print(dog)

# 该动物是 野兽
print(animal)

# male
print(animal.getSex())

# 以下输出都是2
print(Animal.count)
print(Dog.count)
print(animal.count)

Dog.showInstanceNum()

单例
#! /usr/bin/python3

class MusicPlayer(object):
    """ 音乐播放器单例 """

    # 记录第一个创建对象的引用
    instance = None

    # 是否执行过初始化的标记
    init_flag = False

    # 一定要传入一个类cls
    def __new__(cls, *args, **kvargs):
        # 判断类属性是否为空对象
        if cls.instance is None:
            # 调用父类的方法,为第一个对象分配内存
            cls.instance = super().__new__(cls)

        # 返回类属性保存的对象引用
        return cls.instance


    def __init__(self):
        # 1、判断是否执行过初始化
        if MusicPlayer.init_flag:
            return

        # 2、没有执行过初始化,则进行初始化操作
        print("这里执行初始化操作:设置实例属性等")

        # 3、将初始化标记为True
        MusicPlayer.init_flag = True

# 测试代码
playerOne = MusicPlayer()
playerTwo = MusicPlayer()

# 从打印中,我们可以看出:
# 内存地址一样,并且__init__的代码也执行了一次
print(playerOne, playerTwo)

扩展
list = [1, 2]
  • 1、使用 dir() 获取类的方法列表数组:
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', 
'__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', 
'__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', 
'__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', 
'__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', 
'__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 
'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
  • 2、type() 获取对象的类型
type(list) # 输出 <class 'list'>
  • 3、__name__ 是Python的一个内置属性,记录着一个字符串。如果它所在的模块被其他模块导入,则它就是模块名;如果是当前执行的程序,它就是__main__ 。它可以保证:测试模块的代码 只有在测试的情况下被执行,在被导入的情况下不会执行

    所以,我们经常在Python文件里看到类似于这样的代码:

    # 在代码的最下方
    def main():
        # ...
        pass
    
    # 根据__main__决定是否执行以下代码
    if __name__ == "__main__":
        main()
    
  • 4、 __file__用来打印模块的路径。

    import re
    
    print(re.__file__)
    
  • 5、异常

    异常的处理:

    try:
        # 可能会抛出异常的代码
        pass
    except Exception as result: # 捕获所有的异常,并给异常起个别名
      # 处理捕获到的异常
      pass
    else:
        # 没有异常才会执行的代码
        pass
    finally:
        # 无论有没有异常,都会执行这段代码
        pass
    

    主动抛出异常:

    raise Exception("主动抛出异常")
    

相关文章

  • 正则表达式

    Python正则表达式初识(一) Python正则表达式初识(二) Python正则表达式初识(三) Python...

  • Lesson 008 —— python 初识

    Lesson 008 —— python 初识 python 文件 python 文件名Python 文件名的后缀...

  • 2020-07-01

    ## 初识Python ### Python简介 #### Python的历史 1. 1989年圣诞节:Guido...

  • --Python-- # 1

    写在最前面 Python初体验 使用Python之前 使用Python 初识Python之后 不得不说Python...

  • 2019-07-28python练习day01

    python练习day01 初识Python 从终端运行Python程序 确认Python的版本 可以Window...

  • 【Python 100天从新手到大师】1、初识Python

    初识Python Python简介 Python的历史 1989年圣诞节:Guido von Rossum开始写P...

  • python入门学习第一天-初识Python

    初识Python Python简介 Python的历史 1989年圣诞节:Guido von Rossum开始写P...

  • 3.0、python基础初识

    python基础初识 1、运行python代码 在Windows开始菜单中找到python的安装目录,运行pyth...

  • 初识Python

    接触Python,是因为一个公司项目的需求,时间紧,任务重,虽然之前学过编程c++语言,但毕业之后做过两年的...

  • 初识python

    简述python的优缺点及应用的场景?2.快捷键和DOS命令的练习? 优点:简单易学,免费开源,高层语言,可移植,...

网友评论

      本文标题:Python:初识

      本文链接:https://www.haomeiwen.com/subject/mtrljktx.html