[py]python中__new__作用
使劲搞,但是没搞清楚__new__的作用
了解Python元类
Python进阶:一步步理解Python中的元类metaclass

__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__作用的更多相关文章
- Python中__new__的作用
		__new__ 的作用 依照Python官方文档的说法,__new__方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径.还 ... 
- Python中__new__方法为什么有人说是构造方法?有什么作用?
		__new__方法是Python新式类引入的,通常用于控制生成一个新实例的过程.它是类级别的静态方法,是在创建实例对象前执行,如果自定义类中没有重写该方法,则Python自动调用父类的方法,当所有父类 ... 
- Python中__new__()方法的使用和实例化
		new()是在新式类中新出现的方法,它作用在构造方法init()建造实例之前,可以这么理解,在Python 中存在于类里面的构造方法init()负责将类的实例化,而在init()调用之前,new()决 ... 
- Python 中星号作用:解包&打散
		python中’*’和’**’的使用分两个方面,一个是计算,另一个是参数传递过程中元素的打包和解包. 计算方面 ‘*’和’**’在python中最常见的作用分别是‘相乘’和‘乘幂’,如下: > ... 
- decorator在Python中的作用
		decorator(装饰器)在python中作用,可以起到代码复用,也可以起到AOP(面向横切面)的作用. 另外很重要的一点应该就是function在python的世界中是作为一等公民存在的. 在py ... 
- Python中__new__与__init__介绍
		在python2.x中,从object继承得来的类称为新式类(如class A(object))不从object继承得来的类称为经典类(如class A()) 新式类跟经典类的差别主要是以下几点: 1 ... 
- [py]python中的特殊类class type和类的两面性图解
		生活中的模具 生活中 编程 万物都从无到有, 起于烟尘 () 生产原料,铁 object 车床-生产各类模具 元类即metaclass,对应python的class type 模具-生产各类实在的物品 ... 
- python中 __new__和__init__
		python这两个函数和类的实例化有关. __init__是实例化完成之后调用的,会对生成的对象实例做一些修饰 __new__是python新类型才有的,它更像是c/c++里面的构造函数,因为这个函数 ... 
- Python 中__new__()和__init__()的区别
		转自: https://blog.csdn.net/weixin_37579123/article/details/89515577 __new__方法:类级别的方法 特性: 1.是在类准备将自身实例 ... 
随机推荐
- Docker 集群管理
			docker systemd unit file [Unit] Description=Docker Application Container Engine Documentation=http:/ ... 
- Neo4j简单的样例
			系统环境: Ubuntu 04.10 x64 一:安装 下载最新版:neo4j-community-2.2.3-unix.tar.gz 解压 cd neo4j-community-2.2.3/bin ... 
- git 清空所有commit记录方法
			说明:例如将代码提交到git仓库,将一些敏感信息提交,所以需要删除提交记录以彻底清除提交信息,以得到一个干净的仓库且代码不变 1.Checkout git checkout --orphan late ... 
- 测试用例和BUG描述规范
			欢迎关注我的公众号,了解更多的测试知识:[软件测试经验与教训] 一一BUG描述基础知识 Bug标题中需包含Bug的具体位置并以[]标注 举例:[模块-子模块-页面]XXXXXXXXXXXX Bug标题 ... 
- VS-Qt-OSG-CMake基本项目框架
			在VS-Qt-CMake基础上,打开mainwindow.ui,添加一个QWidget,然后在widget上右键-提升,选择SceneViewWidget CMakeLists.txt中添加了OSG相 ... 
- 计算时间:一个C++运算符重载示例
			Time类是一个用于计算时间的类,其原型如下:程序清单11.1 mytime0.h // mytime0.h -- Time class before operator overloading #if ... 
- Spring启动过程分析】(1)启动流程简介
			1. spring简介 spring的最基本的功能就是创建对象及管理这些对象之间的依赖关系,实现低耦合.高内聚.还提供像通用日志记录.性能统计.安全控制.异常处理等面向切面的能力,还能帮我们管理最头疼 ... 
- java基础---->java中国际化的实现
			应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产.开发这样的程序的过程,就称为国际化.今天,我们就开始学习java中国际化的代码实现. Java国际化主要通过如下3个类 ... 
- Cloud Foundry技术全貌及核心组件分析
			原文链接:http://www.programmer.com.cn/14472/ 历经一年多的发展,Cloud Foundry的架构设计和实现有了众多改进和优化.为了便于大家了解和深入研究首个开源Pa ... 
- fedora/centos7防火墙FirewallD详解
			1 使用 FirewallD 构建动态防火墙 1.1 “守护进程” 1.2 静态防火墙(system-config-firewall/lokkit) 1.3 使用 iptables 和 ip6tabl ... 
