IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python-100-Days学习笔记day09 -> 正文阅读

[Python知识库]Python-100-Days学习笔记day09

#
@classmethod

?

cls等同于大类名称Clock,所以cls(参数)等价于Clock(参数)

    @classmethod
    def now(cls):
        ctime = localtime(time())
        return cls(ctime.tm_hour, ctime.tm_min, ctime.tm_sec)   

time类中的方法localtime是将秒数转化为年月日的固定格式,由固定的变量名储存,所以cls代指大类,然后把新的tm_hour,tm_min,tm_sec赋给大类自身的属性


##返回当前时间的时间戳(1970纪元后经过的浮点秒数)。
from time import time
print "time.time(): %f " %  time.time()

# ime.time(): 1234892919.655932

print(localtime(time()))

# time.struct_time(tm_year=2021, tm_mon=12, tm_mday=1, tm_hour=22, tm_min=7, tm_sec=55, tm_wday=2, tm_yday=335, tm_isdst=0)

可以直接对类方法进行创建对象,使得now方法本来就是一个对象,在进行调用时不需要实例化

然后该对象的属性仍是大类中的属性名,还能继续调用大类中的其他方法

def main():
    # 通过类方法创建对象并获取系统时间
    clock = Clock.now()
    while True:
        print(clock.show())
        sleep(1)
        clock.run()

super().__init__(name, age)相当于继承了Person中的init方法,然后填入init方法所需要的参数name,age

class Student(Person):
    """学生"""

    def __init__(self, name, age, grade):
        super().__init__(name, age)
        self._grade = grade

含abstractmethod方法的类不能实例化,继承了含abstractmethod方法的子类必须复写所有abstractmethod装饰的方法,未被装饰的可以不重写。(所以没有重写__init__方法)

以下面这个例子为例,Pet不需要实例化,只需要作为父类在不同宠物类进行继承即可;又因为要实现不同宠物要打印出不同的叫声,因此Pet中的make_voice方法需要@abstractmethod进行修饰,从而实现不同的子类对象会表现出不同的行为,此称为多态。

将Pet类处理成了一个抽象类,所谓抽象类就是不能够创建对象的类,这种类的存在就是专门为了让其他类去继承它。需要abc模块的ABCMeta元类abstractmethod包装器来达到抽象类的效果。因此metaclass=ABCMetapython中抽象类所必备的参数

pass只作为一个占位语句,保持结构完整

class Pet(object, metaclass=ABCMeta):
    """宠物"""

    def __init__(self, nickname):
        self._nickname = nickname


    @abstractmethod
    def make_voice(self):
        """发出声音"""
        pass

可以把要执行的对象写为列表,然后用循环依次进行

def main():
    pets = [Dog('旺财'), Cat('凯蒂'), Dog('大黄')]
    for pet in pets:
        pet.make_voice()

想要自动输出属性就要定义以下方法,不然打印对象print(Ultraman)出来的不是属性而是一串指针值

    def __str__(self):
        return '~~~%s奥特曼~~~\n' % self._name + \
            '生命值: %d\n' % self._hp + \
            '魔法值: %d\n' % self._mp

类内的方法必须要有self参数,因为他属于类。在类之外的就可以不需要self参数
一旦有一个True即跳出for循环,return可以立马终止最外层的循环
def is_any_alive(monsters):       
    """判断有没有小怪兽是活着的"""
    for monster in monsters:
        if monster.alive > 0:
            return True 
    return False       

__repr__() 方法是类的实例化对象用来做“自我介绍”的方法,默认情况下,它会返回当前对象的“类名+object at+内存地址”,而如果对该方法进行重写,可以为其制作自定义的自我描述信息。

    def __str__(self):
        if self._face == 1:
            face_str = 'A'
        elif self._face == 11:
            face_str = 'J'
        elif self._face == 12:
            face_str = 'Q'
        elif self._face == 13:
            face_str = 'K'
        else:
            face_str = str(self._face)
        return '%s%s' % (self._suite, face_str)
    
    def __repr__(self):
        return self.__str__()

再一次,将对象存在了列表里,current属性由于默认为0,不需要输入,所以在方法括号里无需添加这个变量

class Poker(object):
    """一副牌"""

    def __init__(self):
        self._cards = [Card(suite, face) 
                       for suite in '????'
                       for face in range(1, 14)]
        self._current = 0

isinstance(object, classinfo)是判断两个类型是否相同

def main():
    emps = [
        Manager('刘备'), Programmer('诸葛亮'),
        Manager('曹操'), Salesman('荀彧'),
        Salesman('吕布'), Programmer('张辽'),
        Programmer('赵云')
    ]
    for emp in emps:
        if isinstance(emp, Programmer):
            emp.working_hour = int(input('请输入%s本月工作时间: ' % emp.name))
        elif isinstance(emp, Salesman):
            emp.sales = float(input('请输入%s本月销售额: ' % emp.name))
        # 同样是接收get_salary这个消息但是不同的员工表现出了不同的行为(多态)
        print('%s本月工资为: ¥%s元' %
              (emp.name, emp.get_salary()))

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 11:59:03  更:2021-12-07 11:59:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:28:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码