构造方法(参见小甲鱼入门教程) __ init__()方法:类的初始化方法,初始化类对象时被调用,需要的时候再调用它 注意点:这个方法的返回值必须是None class Rectangle(): def __init__(self,width,height): self.width =width self.height=height __ new __ ()方法:实际调调用在__ init __()之前.实例化对象时第一个被调用的方法.在新创建一个对象时调用,一般不会重写它,继承自不可变类型,才…
1.def__init__()方法: class Cat: """定义了一个Cat类""" #初始化对象 def __init__(self, new_name, new_age): self.name = new_name self.age = new_age #方法 def eat(self): print("猫在吃鱼....") def drink(self): print("猫正在喝kele.....&quo…
我们在整理阶段解决了一些意外的问题.但是这些问题仅仅只是被解决而已,我们并没有去思考过这些问题是为什么产生的?以及在以后我们如何去避免这些问题的产生? 方法所在类的命名问题,最后我们通过方法分类解决了,并且学习了类的第一作用:方法的集合. 解决之后导致了大量的弃用代码,为了标记弃用代码,我们又简单学习了 System.Obselete 这个 API. 这样的意外问题真是好啊,可以让我们一下学习很多东西.不过如果在工作中或者做项目中全是意外问题,而身边又没人知道这么解决,那么每天肯定都会过得非常辛…
任何事物都有一个从创建,被使用,再到消亡的过程,在程序语言面向对象编程模型中,对象也有相似的命运:创建.初始化.使用.垃圾回收,不同的阶段由不同的方法(角色)负责执行. 定义一个类时,大家用得最多的就是 __init__ 方法,而 __new__ 和 __call__ 使用得比较少,这篇文章试图帮助大家把这3个方法的正确使用方式和应用场景分别解释一下. 关于 Python 新式类和老式类在这篇文章不做过多讨论,因为老式类是 Python2 中的概念,现在基本没人再会去用老式类,新式类必须显示地继…
__init__:当实例化一个类的时候,首相会执行__new__方法创建一个对象,接下来会执行__init__方法对对象的一些属性进行初始化. 所以如果对象有属性,一般会直接写在__init__方法里面: class Test: def __init__(self, a, b): self.a = a self.b = b test = Test(a, b) __str__:当实例化一个类之后,就有了一个对象的引用,如 test = Test() 这个时候如果直接print(test),输出的是…
只要对象能被调用 产生对象的类里必然有__call__方法 在调用类时,必定先触发type里的__call__ __call__下有: 1.产生对象的object.__new__ 2..被调用的类自己的__init__ class AA(type): def __init__(self,class_name,class_bases,class_dic): super().__init__(class_name,class_bases,class_dic) def __call__(self, *…
元类的介绍 请看位于下面网址的一篇文章,写的相当好. http://blog.jobbole.com/21351/ 实例补充 class Meta(type): def __new__(meta, cls, parent, attr_dict): res = super(Meta, meta).__new__(meta,cls, parent, attr_dict) print('meta new stage, %s is %s, %s is %s' % (meta, type(meta), c…
方法 在上一篇随笔中,简单提到了类的某些方法:__init__()等的调用,并简要说明方法和函数的区别. 方法是在类内部定义的函数,方法也是对象,所以方法是类的属性,这就是为什么说实例的方法存在于类定义中.而在ruby中,方法肯定是存在于类中的,实例的单件方法就存在于单件类中,python中并没有单件类,并且方法本质也是变量,任何对象在调用方法时,遵循命名空间的查找顺序,不论是对象还是类,其方法不过是对函数对象的引用.但是方法和一般是属性任然存在区别: from types import Met…
eval内置函数 # eval内置函数的使用场景:#   1.执行字符串会得到相应的执行结果#   2.一般用于类型转化,该函数执行完有返回值,得到dict.list.tuple等​dic_str = "{'a': 1, 'b': 2, 'c': 3}"print(eval(dic_str))​list_str = "[1, 2, 3, 4, 5]"print(eval(list_str))​tuple_str = "(1, 2, 3, 4, 5)&quo…
类的创建 前面的随笔都是关于类的知识,通过类创建对象,那这个类到底是怎么产生的呢? 1. 传统创建类 class Foo(object): def __init__(self,name): self.name = name f = Foo("shuaigaogao") f 是通过 Foo 类实例化的对象,其实,不仅 f 是一个对象,Foo类本身也是一个对象,因为在Python中一切事物都是对象,按照一切事物都是对象的理论:obj对象是通过执行Foo类的构造方法创建,那么Foo类对象应该…