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()

上面是一个组装类

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

扫描二维码关注公众号,回复: 903140 查看本文章

#上面相当于组装了一个类
#原理
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里面有三个参数,第一个参数是类的名称;(但是我不知道这个名称有什么用处,可以在双引号里面啥都不写,以后知道了我会回来修改的)

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

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

猜你喜欢

转载自blog.csdn.net/qq_40794602/article/details/80340870