元类metaclass

使劲搞,但是没搞清楚__new__的作用

了解Python元类

Python进阶:一步步理解Python中的元类metaclass

Python中的__new__和__init__的区别

使用元类

__new__的作用: 元类

class Author(type):
# 类对象 类名 父类 类属性和方法
def __new__(mcs, name, bases, dict):
# 添加作者属性
dict["author"] = "mm"
return super(Author, mcs).__new__(mcs, name, bases, dict) class Foo(object, metaclass=Author):
pass foo = Foo()
print(foo.author)

创建类

def fn(self):
print("maotai") # 类名 父类 属性
Hello = type("Hello", (object,), dict(hello=lambda x: x + 1))
h = Hello()
h.hello(12) ## type
# 1,同__class__, 实例属于哪一类 类属于哪一类
# 2,创建一个类

匿名函数

g = lambda x: x + 1
print(g(1))

self是什么

class A:
# self是什么
def __init__(self):
print(self) a = A()
print("--->",a)

cls的含义

class A:
## cls的含义
@classmethod
def show(cls,name):
print("A",name) a = A()
a.show("maota")

子类调用父类方法super

class A:
def show(self):
print("hello A") class B(A):
def show2(self):
super().show() # 调用父类方法 b = B()
b.show2()

类的属性和方法

class A:
age = 22 def __init__(self):
self.name = 'maotai'
def show(self):
pass ## dir(A) 有age, show 类的属性和方法
## dir(A()) 有name和age,show 实例的属性和方法 for i in dir(A()):
print(i) print(A.__dict__) # age show 类属性和方法
# __doc__
# __init__
# __dict_
# __dir__ # __class__
# __delattr__
# __new__
# __repr__
# __setattr__

@property和__call__ 与 callable()

定制类


class Person:
# 对象当作属性来调用
@property
def show(self):
print("mao tai")
# 打印实例()时候的显示
def __call__(self, *args, **kwargs):
print("hello maotai") p = Person()
# p() # hello maotai
# TypeError: 'Person' object is not callable
p.show # mao tai print(callable(p)) # True

[py]python中__new__作用的更多相关文章

  1. Python中__new__的作用

    __new__ 的作用 依照Python官方文档的说法,__new__方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径.还 ...

  2. Python中__new__方法为什么有人说是构造方法?有什么作用?

    __new__方法是Python新式类引入的,通常用于控制生成一个新实例的过程.它是类级别的静态方法,是在创建实例对象前执行,如果自定义类中没有重写该方法,则Python自动调用父类的方法,当所有父类 ...

  3. Python中__new__()方法的使用和实例化

    new()是在新式类中新出现的方法,它作用在构造方法init()建造实例之前,可以这么理解,在Python 中存在于类里面的构造方法init()负责将类的实例化,而在init()调用之前,new()决 ...

  4. Python 中星号作用:解包&打散

    python中’*’和’**’的使用分两个方面,一个是计算,另一个是参数传递过程中元素的打包和解包.  计算方面 ‘*’和’**’在python中最常见的作用分别是‘相乘’和‘乘幂’,如下: > ...

  5. decorator在Python中的作用

    decorator(装饰器)在python中作用,可以起到代码复用,也可以起到AOP(面向横切面)的作用. 另外很重要的一点应该就是function在python的世界中是作为一等公民存在的. 在py ...

  6. Python中__new__与__init__介绍

    在python2.x中,从object继承得来的类称为新式类(如class A(object))不从object继承得来的类称为经典类(如class A()) 新式类跟经典类的差别主要是以下几点: 1 ...

  7. [py]python中的特殊类class type和类的两面性图解

    生活中的模具 生活中 编程 万物都从无到有, 起于烟尘 () 生产原料,铁 object 车床-生产各类模具 元类即metaclass,对应python的class type 模具-生产各类实在的物品 ...

  8. python中 __new__和__init__

    python这两个函数和类的实例化有关. __init__是实例化完成之后调用的,会对生成的对象实例做一些修饰 __new__是python新类型才有的,它更像是c/c++里面的构造函数,因为这个函数 ...

  9. Python 中__new__()和__init__()的区别

    转自: https://blog.csdn.net/weixin_37579123/article/details/89515577 __new__方法:类级别的方法 特性: 1.是在类准备将自身实例 ...

随机推荐

  1. c++ 类数据成员的定义、声明

    C++为类中提供类成员的初始化列表类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员2.进入构造函数后在构造函数中执行一般计算  1.类里面的任何成员变量在定义时是不 ...

  2. MySQL<表单&集合查询>

    表单查询 简单查询 SELECT语句 查询所有字段 指定所有字段:select 字段名1,字段名2,...from 表名; select * from 表名; 查询指定字段 select 字段名1,字 ...

  3. chrome JS 总结

    1. chrome 的 console 中不能添加本地文件 2. 下面的代码是在亚马逊的商品页面上添加一个 image, 点击之后触发 alert 函数. 其中 cBoxInner 是人工寻找到的标签 ...

  4. HTML5怎么实现录音和播放功能

    小旋风柴进 html: [html] view plain copy <span style="white-space:pre"> </span><a ...

  5. 微信开放平台全网发布时,检测失败 —— C#

    主要就是三个:返回API文本消息,返回普通文本消息,发送事件消息   --会出现失败的情况 (后续补充说明:出现检测出错,不一定是代码出现了问题,也有可能是1.微信方面检测时出现服务器请求失败,2.我 ...

  6. thinkphp5 邮件发送(qq邮箱为例)

    一.首先需要你开启smtp 服务,登录qq邮箱,进入设置 -> 账户 注意: 开启后会生成授权码,一定要记下,两个都记下,登录邮件客户端需要.这里配置邮件发送也需要这个授权码 二. 下载phpm ...

  7. Java三方---->pdf框架之IText的使用

    在企业的信息系统中,报表处理一直占比较重要的作用t.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超链接显示或下载得到生成的报表,这样就很好的解决了B/S系统的报表处理问题.今天 ...

  8. flag - 待浏览学习网站

    学习:gulp+jade(pug)+sass 待浏览网站如下:http://www.ydcss.com/archives/18#lesson1 https://nodejs.org/en/ https ...

  9. 原创Java多线程详解(一)

    只看书不实践是不行的.来实践一下~~~~~~(引用请指明来源) 先看看百科对多线程的介绍 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的 ...

  10. 拦截chrome的console.log输出

    console.log = function(){}; 这样 console.log(123) 将不会在输出任何调试信息