[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.是在类准备将自身实例 ...
随机推荐
- 51地图标注接口(EZMarker API)
功能 在很多时候,您需要您的用户标出一个位置,比如:一个房地产网站,用户在登记新楼盘的时候,就需要在地图上标出这个楼盘的位置,这个时候就可以用到本接口. 地图标注接口(EZMarker API)是我要 ...
- 记录下一个自己不常用的关键字-yield
yield 这个关键字 一直很少用,也不知道具体用途.按照习惯就查询了下MSDN. 意思大致是这样的:在迭代器块中用于向枚举数对象提供值或发出迭代结束信号 表现形式:1. yield return & ...
- 安装Phoenix时./sqlline.py执行报错File "./sqlline.py", line 27, in <module> import argparse ImportError: No module named argparse解决办法(图文详解)
不多说,直接上干货! 前期博客 Apache版Phoenix的安装(图文详解) 问题现象 Traceback (most recent call last): File , in <module ...
- opencv-从图像旋转学习Mat数据訪问
先看一个简单的样例 代码: // ConsoleApplication3_6_23.cpp : Defines the entry point for the console application. ...
- ASP------字符串与HTML格式相互转换
代码: 1.字符串转HTML HttpUtility.HtmlDecode(" is ") 或者 Server.UrlDecode(" is ") 2.HTML ...
- python2.0 s12 day8 _ python线程&python进程
1.进程.与线程区别2.cpu运行原理3.python GIL全局解释器锁4.线程 1.语法 2.join 3.线程锁之Lock\Rlock\信号量 4.将线程变为守护进程 5.Event事件 6.q ...
- 学习C#基础知识这段时间
似乎穿越的感觉,我又来到了这周的周五,总是在周五,知道了时间的概念,上午会讲课,但是在下午就是一个总结小练习,上午老师给我们讲了委托,在听课时间感觉很简单啊,哪里有难的地方啊,一直在好奇,老师在演示给 ...
- linux IP 设置
修改ip地址即时生效:# ifconfig eth0 192.168.1.102 netmask 255.255.255.0启动生效:修改/etc/sysconfig/network-scripts/ ...
- 通过([AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.Read)] )在前台html页面调用cs方法
app_code中CS代码( Cs页面文件名public class ajaxGET): [AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement ...
- MUI 单个图片上传预览(拍照+系统相册):先选择->预览->上传提交
1 html部分 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...