Python教程

Python入门之day9

本文主要是介绍Python入门之day9,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

继承

 继承?从你的长辈那里传承的东西
问题是: 在继承的时候继承了什么东西?
  类的继承:
类中又什么?变量和方法
class son(father)
这甚至可以只写pass
但是如果father里方法要传参给对象变量
son()里也要传参

从object中可以继承很多__xxxx__的方法
例如__new__ 创建一个对象  __init__初始化一个对象
 

父类继承过了  子类就不用继承了
object 默认继承  不用写
def __add__(self, other)#self +other
__sub__减法
__mul__乘法
__truediv__除法
__le__   lt  gt   小于大于小于等于
__len__
__str__
__dir__
__ 

【str和repr区别】
str  人类可读
repr 程序员可读

super (B,self)传  type, object-or-type
功能sefl确定继承顺序
    B来确定搜索位置   ,从B之后开始

def _print_gender  往前面加下划线  隐私保护
 别人. 的时候搞不出来
_xxx 约定  python中的私有变量
__xxx:后边不要写成__xxx__python保留的命名方法
__xxx:在解释器中的名称改写:定义__xxx的变量和方法,python会自动改名
                                 改成 _ClassName__xxx:
     eg。在父类中有个方法method1 打印123
                 子类中也有一个方法method 打印456
class Parent:
  def  _ _method1(self):   #现在这个叫_Parent_ _method1()
       print
class son(Parent):
   def _ _method1(self)这个叫 _son_ _method1()

用的时候son._Parent_ _method1()

闭包

闭包特征:
1 嵌套函数
2 内层函数引用了外层函数的变量
3 内层函数作为返回值返回给外层函数
 
function . _ _code_ _.co_varnames看代码块里的变量
                                .co_

globals()返回一个字典,包含当前作用域的全局变量
locals()返回一个字典,包含当前作用域的局部变量也叫本地变量
nonlocal 变量名  定义一个自由变量
 

装饰器decorator
利用闭包的原理 搞一个装饰器
写一个闭包函数  
@装饰器
def func()
  类变量那个地方
   自动(self)
想不用self

静态方法@staticmethod
类方法@classmethod 

 work

 1.定义一个父类:
要求:包含三个对象变量,且其中一个对象变量使用_命名
定义一个方法:命名使用_ _命名
定义一个子类继承上边的父类:且定义一个和父类方法名相同的方法(__)
实例化子类的对象
访问带_的对象变量
访问父类中的_ _xxx方法
访问子类中的_ _xxx方法

class Father:
    def __print(self):
        print("father")
    def __init__(self, arg1, arg2, arg3):
        self.arg1 = arg1
        self.arg2 = arg2
        self._arg3 = arg3

class Son(Father):
    def __print(self):
        print("son")

data = Son(1, 2, 3)
data._Father__print()
data._Son__print()


2.什么是闭包?
闭包的特征?
定义闭包,完成的功能为:传入一个数求和并输出
例如: 传入10 ->输出10
传入15 ->输出25
传入20 ->输出45

def sum_data():
    result = []
    def inner(value):
        result.append(value)
        print(sum(result))
    return inner

result = sum_data()
result(10)


3.定义一个装饰器:打印函数运行花费的时间
你在执行之前获取一个时间
执行函数
在执行函数之后获取一个时间
去求时间差
time模块

import time
def print_time(func):
    def inner(*args, **kwargs):
        old_time = time.time()
        result = func(*args, **kwargs)
        func_name = str(func).split(' ')[1]
        print('{} use time: {}s'.format(func_name, time.time() - old_time))
        return result

    return inner
@print_time
def func():
    time.sleep(3)
func()


4.定义一个类:
要求:包含一个对象属性,且用_(单下划线)命名的
定义一个类方法(装饰器)
定义一个静态方法(装饰器)
定义委托属性(三个类装饰器): 可以访问_命名的属性的值
可以修改_命名的属性的值
可以删除_命名的属性
执行:
实例一个对象
调用类方法(类和对象两种方式)
调用静态方法(类和对象两种方式)
对象.委托属性
对象.委托属性 = value
del 对象.委托属性

 

class Computer:
    def __init__(self, brand, cpu, ram):
        self.brand = brand
        self.cpu = cpu
        self.ram = ram
        self._gpu = None
    @classmethod
    def class_method(cls):
        print("classmethod")
    @staticmethod
    def static_method(*args, **kwargs):
        print("staticmethod")
    @property
    def gpu_attr(self):
        return self._gpu
    @gpu_attr.setter
    def gpu_attr(self, value):
        self._gpu = value
    @gpu_attr.deleter
    def gpu_attr(self):
        del self._gpu
rog = Computer("联想拯救者", "intel7 10875H", "16G")
rog.class_method()
rog.static_method()
rog.gpu_attr = "RTX 2060"
print(rog.gpu_attr)
del rog.gpu_attr

这篇关于Python入门之day9的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!