清浅

我有一个梦,那就是征服it世界

python——oop05

1.python只要没有出错就执行下去,出错了才会报错

def fun():
    printfff("kbflkv")



#这段代码不会报错,因为我们没有调用这个函数

2.del的用法

class fun():
    age=19
    def __init__(self):
        self.name="罗建义"

    def read(self):
        print("我会读书")

a=fun()
print(a.age)
del fun.age#del语句可以删除类和对象的属性
# print(a.age)

a.read()
# del a.read()不可以删除类里面的函数
# class fun():
#     age=19
#     def __init__(self):
#         self.name="罗建义"
#     @property
#     def read(self):
#         print("我会读书")
#
#
# a=fun()
# # del a.age  对象不可以删除类的属性 同样类也不可以删除对象的属性  你可以打印一下__dict__
# print(a.age)

3.

- 抽象类:包含抽象方法的类叫抽象类,通常成为ABC类
- 抽象类的使用
    - 抽象类可以包含抽象方法,也可以包含具体方法
    - 抽象类中可以有方法也可以有属性
    - 抽象类不允许直接实例化
    - 必须继承才可以使用,且继承的子类必须实现所有继承来的抽象方法
    - 假定子类没有是现实所有继承的抽象方法,则子类也不能实例化
    - 抽象类的主要作用是设定类的标准,以便于开发的时候具有统一的规范

import abc
#声明一个类并且指定当前类的元类
class Human(metaclass=abc.ABCMeta):
# 定义一个抽象的方法\n"
   @abc.abstractmethod
   def smoking(self):
       pass
# 定义类抽象方法\n",
   @abc.abstractclassmethod
   def drink():
       pass
       # 定义静态抽象方法\n",
   @abc.abstractstaticmethod
   def play():
        pass
   def sleep(self):
        print("我在睡觉")

4.组装类

def say(self):
    print("saying...")

class fun():
    pass


fun.say=say

t=fun()
t.say()

上面是一个组装类

下面几串代码会让你更加深刻的了解到,这个用法

#上面相当于组装了一个类
#原理
def say(name):
    print("来一发嘛{}".format(name))
say("罗建义")
liumang=say#函数名可以这样传递
liumang("luojianyi")
def say():
    print("saying...")

class fun():
    pass


fun.say=say#这样组装会出错,没有参数接受self

t=fun()
t.say()
from types import MethodType
def say(self):
    print("saying...")

class fun():
    pass


t=fun()
t.say=MethodType(say,fun)#这个样子是绑定在实例上的
t.say()

# it=fun()
# it.say()#所有在在这个实例下没哟那个方法

5.还可以使用type来组装一个类

def say(self):
    print("saying.......")

def play(self):
    print("playing.....")



fun=type('fun',(object,),{"csay":say,"cplay":play})
a=fun()
a.csay()
a.cplay()

type会返回一个类

    type里面有三个参数,第一个参数是类的名称;(但是我不知道这个名称有什么用处,可以在双引号里面啥都不写,以后知道了我会回来修改的)

    第二个参数就是要继承的父类,以元组的方式

    第三个参数是一个字典,写出类里面的各个属性

6.使用元类

# 元类写法是固定的,必须继承自type
# 元类一般命名以MetaClass结尾
class TulingMetaClass(type):
    # 注意以下写法
    def __new__(cls, name, bases, attrs):
        # 自己的业务处理
        print("哈哈,我是元类呀")
        attrs['id'] = '000000'
        attrs['addr'] = "北京海淀区公主坟西翠路12"
        return type.__new__(cls, name, bases, attrs)


# 元类定义完就可以使用,使用注意写法
class Teacher(object, metaclass=TulingMetaClass):
    pass


t = Teacher()

t.id
关于最后两个模块课参考一下廖雪峰老师的网站
阅读更多
版权声明: https://blog.csdn.net/qq_40794602/article/details/80340870
想对作者说点什么? 我来说一句

python简明教程

2011年07月08日 1.25MB 下载

python-2.5.1

2008年10月16日 10.12MB 下载

python python

2011年04月22日 15KB 下载

python python python python python

2010年08月29日 13.57MB 下载

python数据挖掘入门

2017年09月12日 8.78MB 下载

python机器学习

2018年04月03日 940KB 下载

python数据分析及其学习

2017年09月16日 100KB 下载

python基础

2018年05月08日 4.35MB 下载

python 教程与指南

2009年04月17日 8.01MB 下载

没有更多推荐了,返回首页

不良信息举报

python——oop05

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭