精华内容
下载资源
问答
  • python 类 构造函数 Python构造函数创建类对象 (Python Constructors to create a Class Object) In the last tutorial, we learned how to create a class, its instance and how to access class members...

    python 类构造函数

    In the last tutorial, we learned how to create a class, its instance and how to access class members(variables and functions). In this tutorial, we will try to improve our understanding about classes by learning more about them. So far, it is known that class keyword is used to initiate the definition of a class, followed by the name of the class. After finishing the first line with colon we move to next line and starts defining variables or methods after providing proper indentation.

    在上一教程中,我们学习了如何创建类,其实例以及如何访问类成员(变量和函数)。 在本教程中,我们将通过学习更多关于类的知识来尝试提高对类的理解。 到目前为止,已知可以使用class关键字来初始化类的定义,然后使用该类的名称。 用冒号结束第一行后,我们移至下一行,并在提供适当的缩进后开始定义变量或方法。

    什么是构造函数? (What is a Constructor?)

    As seen in the last tutorial, we know that there are two ways to declare/define a variable of a class.

    从上一教程中可以看到,我们知道有两种方法来声明/定义类的变量。

    First, by simply defining it inside the class and maybe even initialize it with some value, then and there, pretty much like:

    首先,只需在类中定义它,甚至可以使用一些值对其进行初始化,然后到那里,就像:

    class Example:
    	myVariable = "some value";

    Second way is to declare them inside any function of the class, using the self keyword.

    第二种方法是使用self关键字在类的任何函数中声明它们。

    Also, it is possible to assign values to the variables while declaring them but sometimes it may happen that the values of these variables may vary for different objects of the same class. In such cases, you'll have to go for assigning values to the variables after the object creation.

    同样,可以在声明变量时将其赋值,但有时可能会发生这些变量的值针对同一类的不同对象而变化的情况。 在这种情况下,您必须在创建对象后为变量分配值。

    Again, this can be done in two ways. First, by calling each variable direct from the object, using the dot . symbol, like:

    同样,这可以通过两种方式完成。 首先,使用dot直接从对象调用每个变量. 符号,例如:

    >>> myObject.myVariable = "some other value";

    or we can also ask user for an input:

    或者我们也可以要求用户输入:

    >>> myObject.myVariable = input();

    Besides this we can also assign/modify values of our variables inside class functions using the self keyword.

    除此之外,我们还可以使用self关键字在类函数中分配/修改变量的值。

    class Example:
    	def anotherFunction(self, parameter1):
    		self.myVariable = parameter1;
    		# or by calling for a user input
    		self.myVariable = input();

    If we have such a function defined in our class, then the object's variables can be initialized or re-initialised by calling the anotherFunction() method and passing the desired value as parameter to this method/function.

    如果我们在类中定义了这样的函数,则可以通过调用anotherFunction()方法并将所需的值作为参数传递给该方法/函数来初始化或重新初始化对象的变量。

    >>> myObject = Example()
    >>> myObject.anotherFunction("Amazing Spiderman")
    >>> print (myObject.myVariable)

    Amazing Spiderman

    神奇蜘蛛侠

    As it can be seen, this was a usual user-defined function inside Example class which is utilising parameters to initialize the variable. The concept is fairly simple here. Although, there exists something better, which uses pretty much the same principle and is a defined standard. It's known as a Constructor.

    可以看出,这是Example类中通常使用的用户定义函数,它利用参数来初始化变量。 这里的概念非常简单。 虽然,存在更好的东西,它使用几乎相同的原理并且是已定义的标准。 它被称为构造函数

    Constructor is a special type of function that is called automatically whenever an object of that class is created. For example,

    构造函数是一种特殊的函数类型,每当创建该类的对象时,该函数便会自动调用。 例如,

    >>> myObject = Example();

    By writing Example() in the code above, we are informing python that myObject is an object of class Example. And that is exactly when the constructor of that class is called.

    通过在上面的代码中编写Example() ,我们通知python myObjectExample类的对象。 正是在该类的构造函数被调用时。

    But what will it do? Well, generally, the constructors are used to initialize the variables of the class for an object(instance), although it can perform some other tasks as well, like checking if there are enough resources, if the value used to initialize any variable is valid or not, etc.

    但是它将做什么? 好吧,通常,构造函数用于初始化一个对象(实例)的类的变量,尽管它也可以执行其他一些任务,例如检查是否有足够的资源,用于初始化任何变量的值是否有效。是否,等等。

    在类中定义构造方法 (Defining Constructor method in a class)

    In python, the object creation part is divided into two parts:

    在python中,对象创建部分分为两部分:

    1. Object Creation

      对象创建

    2. Object Initialisation

      对象初始化

    对象创建 (Object Creation)

    Object creation is controlled by a static class method with the name __new__. Hence when you call Example(), to create an object of the class Example, then the __new__ method of this class is called. Python defines this function for every class by default, although you can always do that explicitly too, to play around with object creation.

    对象的创建由名称为__new__static类方法控制。 因此,当您调用Example()来创建Example类的对象时,将调用该类的__new__方法。 Python默认情况下为每个类都定义了此函数,尽管您也可以始终明确地执行此操作,以进行对象创建。

    class Example:
        def __new__(self):
            return 'studytonight';
    
    # creating object of the class Example
    mutantObj = Example()
    
    # but this will return that our object 
    # is of type str
    print (type(mutantObj))

    In the example above, we have used the __new__ function to change the tyoe of object returned, just to show you what we can do using this function.

    在上面的示例中,我们使用了__new__函数来更改返回对象的类型,只是向您展示了我们可以使用该函数做什么。

    To see how the default __new__ function works, run the code below, and you will see that this time the object created is of the type Example

    若要查看默认的__new__函数如何工作,请运行以下代码,您将看到这次创建的对象属于Example类型

    class Example:
    	myVariable = "some value";
    
    simpleObj = Example()
    print (type(simpleObj))

    对象初始化 (Object Initialisation)

    Object initialisation is controlled by an instance method with the name __init__ and which is also generally called as a Constructor. Although, both __new__ and __init__ together forms a constructor.

    对象初始化由一个名为__init__实例方法控制,该实例方法通常也称为构造函数 。 虽然__new____init__共同构成一个构造函数。

    Once the object is created, you can make sure that every variable in the object is correctly initialised by defining an __init__ method in your class, which pretty much means init-iate.

    创建对象后,可以通过在类中定义__init__方法来确保正确初始化了对象中的每个变量,这几乎意味着init-iate

    Thus, it doesn't matter what the class name is, if you want to write a constructor(to initialise your object) for that class, it has to be the __init__() method. Within this function, you're free to declare a class variable(using self) or initialize them. Here is a quick example for our Example class with __init__ method:

    因此,类名是什么都没有关系,如果您想为该类编写一个构造函数(以初始化您的对象),则必须使用__init__()方法。 在此函数中,您可以自由声明类变量(使用self )或对其进行初始化。 这是一个使用__init__方法的Example类的快速示例:

    class Example:
    	def __init__(self, value1, value2):
    	    self.myVariable1 = value1;
    		self.myVariable2 = value2;
    		print ("All variable initialized")

    Once you define the __init__ method in a class, then while creating an object, when you call Example(), you can provide all the necessary parameters required for the object's variables, because when we call Example(), behind the scene python calls the __init__ function for the created object automatically.

    一旦在类中定义了__init__方法,然后在创建对象时,调用Example() ,就可以提供对象变量所需的所有必要参数,因为当我们调用Example() ,python在后台调用了__init__函数自动创建的对象。

    This is how the code will look:

    代码如下所示:

    >>> myObj = Example("first variable", "second variable")

    You can use this function in lots of ways for initialization. One is already mentioned above using a parameter, another way could be asking user for input inside the constructor.

    您可以通过多种方式使用此函数进行初始化。 上面已经提到了使用参数的一种方法,另一种方法是要求用户在构造函数中进行输入。

    def __init__(self):
    	self.myVariable1 = input();
    	self.myVariable2 = input();

    Below we have a diagram which summarises it all.

    在下面,我们有一个图表,总结了这一切。

    Concept of constructor in python

    翻译自: https://www.studytonight.com/python/constructors-in-python

    python 类构造函数

    展开全文
  • python构造函数

    2019-01-04 12:03:49
    python的常用内置方法有以下几种: 1、init(self):python在面向对象概念中的构造函数 2、del(self) 3、 new(cls,*args,**kwd) 等等

    python的常用内置方法有以下几种:
    1、init(self):python在面向对象概念中的构造函数
    2、del(self)
    3、 new(cls,*args,**kwd)
    等等

    展开全文
  • python 构造函数作用

    千次阅读 2019-09-27 01:10:06
    1.构造函数的作用构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作,当创建对象时,对象会自动调用它的构造函数。一般来说,构造函数有以下三个方面的作用:■给创建的对象建立一个标识符;■为对象数据...

    1. 构造函数的作用
            构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作, 当创建
    对象时, 对象会自动调用它的构造函数。一般来说, 构造函数有以下三个方面
    的作用:
                ■ 给创建的对象建立一个标识符;
                ■ 为对象数据成员开辟内存空间;
                ■ 完成对象数据成员的初始化。

    2. 默认构造函数
            当用户没有显式的去定义构造函数时, 编译器会为类生成一个默认的构造函数, 
    称为 "默认构造函数", 默认构造函数不能完成对象数据成员的初始化, 只能给
    对象创建一标识符, 并为对象中的数据成员开辟一定的内存空间。
            
    3. 构造函数的特点
            无论是用户自定义的构造函数还是默认构造函数都主要有以下特点:
                ①. 在对象被创建时自动执行;
                ②. 构造函数的函数名与类名相同;
                ③. 没有返回值类型、也没有返回值;
                ④. 构造函数不能被显式调用。

     

    4.

    构造函数是以双下划线(__)开头的类函数。构造函数的名称是__init__()

    创建对象时,如果需要,构造函数可以接受参数。当创建没有构造函数的类时,Python会自动创建一个不执行任何操作的默认构造函数。

    每个类必须有一个构造函数,即使它只依赖于默认构造函数

    转载于:https://www.cnblogs.com/yanhuidj/p/8880775.html

    展开全文
  • 用于初始化类的内容部状态,Python提供的构造函数式 __init__(); 也就是当该类被实例化的时候就会执行该函数。那么我们就可以把要先初始化的属性放到这个函数里面。如下程序:   __init__()方法是可选的,...
    构造函数与析构函数
    构造函数:
    用于初始化类的内容部状态,Python提供的构造函数式 __init__();

    也就是当该类被实例化的时候就会执行该函数。那么我们就可以把要先初始化的属性放到这个函数里面。如下程序:

        

    __init__()方法是可选的,如果不提供,Python 会给出默认的__init__方法
    一般数据的获取需要定义的get和set方法
     

    析构函数: 

    上图中的“__del__”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间。

    __del__()也是可选的,如果不提供,则Python 会在后台提供默认析构函数

    如果要显式的调用析构函数,可以使用del关键字,方式如下:
    del对象名
     
     
    垃圾回收机制
    Python 采用垃圾回收机制来清理不再使用的对象;Python 提供gc模块释放
    不再使用的对象,Python 采用‘引用计数’ 的算法方式来处理回收,
    即:当某个对象在其作用域内不再被其他对象引用的时候,Python 就自动清除对象;
    Python 的函数collect()可以一次性收集所有待处理的对象(gc.collect())

    —————————————————————————分割线——————————————————————————————————

    一:函数

      如果你需要在程序中重用代码,---------定义函数。 def 函数名(参数)://todo

      如:

      输出:

       也可以将函数的参数定义为默认参数,注:默认参数一般放参数的最后,如:

      

    输出:

    二:类

    类的定义应该是放在面向对象的标题里,但是我们一般函数定义在类里面,从这个范围来说,我在这记录了类。

    类和对象是面向对象编程的两个主要方面。类:创建一个新类型,而对象是这个类的实例,类使用class关键字创建。类的域和方法被列在一个缩进块中。

    注意:在python语言中,不管什么类型的实例都被看做对象,如整数也被作为对象看待,它属于int类,这和其他语言c++,java把整数纯粹作为类型是不同的。

    ”域“的概念:

    属于一个对象或类的变量被称为域,其实就是类里面定义的变量

    ——类的变量和对象的变量

    1类的变量:由一个类的所有对象(实例)共享使用,只有一个类变量的拷贝,所以当某个对象对类的变量做了改动的时候,这个改动会反映到所有其他的实例上。我理解为:其实它就是一个类的全局变量,类实例化后的对象都可以调用该变量。

    2:对象的变量: 由类的每个对象/实例拥有。因此每个对象有自己对这个域的一份拷贝,即它们不是共享的,在同一个类的不同实例中,虽然对象的变量有相同的名称,但是是互不相关的。我理解的是:不同的对象调用该变量,其值改变后互不影响,跟C#的语法一样,我还因为不理解第一点纠结了半天 !

    属于类级别的变量,在使用它的时候一定要带上类型名字 比如 MyClass.count

    属于每个对象级别的变量,在调用的时候一定要带上self表明属于当前对象。self.name

    如:

    输出:

     

    域(变量)和方法(函数)可以合称为类的属性

    类的方法

    类的方法普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。(类似于c#的this指针)

    如:

    __init__方法:属于python语言的构造函数,一个类只能有一个__init__方法

    __del__方法属于python语言的析构函数,它在对象消逝的时候被调用。

    当对象不再被使用时,__del__方法运行,但是很难保证这个方法究竟在 什么时候 运行。如果你想要指明它的运行,你就得使用del语句

    三:模块

    模块:如果你想要在其他程序中重用很多函数--------定义模块。其实就是很多的类型,很多的方法集合在一个或多个文件中,通过import ** 载入,类似于c#中的dll

    模块基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须.py为扩展名。

    注意:每个模块都有自己的名称__name__,__name__作为模块的内置属性,它的作用就是检测.py文件的调用方式,然后根据__name__做出相应的处理。

    模块有两种调用方式:1:被import载入调用  2:直接使用

    如果模块直接执行,__name__="__main__";  通常,此语句用于模块测试中使用。

    例如:定义一模块名字为MyModule.py

    直接运行输出:

    通过其他模块调用:

    调用模块代码:

    间接调用运行输出:

     

    展开全文
  • python构造函数和析构函数

    千次阅读 2018-05-02 14:54:24
    构造函数和析构函数 1、构造方法的使用 ​ 很多类都倾向于将对象创建为有初始化状态.因此类可以定义一个名为init()的特殊方法(构造方法)来实例化一个对象。 构造方法也叫做构造器,是指当实例化一个对象(创建一...
  • Python构造函数__init__()

    2020-07-24 15:42:40
    类是抽象的,也称为“对象模板”,我们需要通过类这个模板,创建类的实例对象,才能使用类定义的功能。 Python对象基本包含三个部分:id(identity ...创建对象,需要定义构造函数__init__()方法,构造方法用于执行...
  • 构造函数构造函数和析构函数都属于python中的特殊方法 其中的“__del__”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构...
  • Python笔记之构造函数__init__

    千次阅读 2018-10-21 20:33:35
    构造函数 __init__初学者看着很吓人,...在Python中,创建构造函数很简单,只需要将方法init的名称从普通的init改成魔法版的__init__即可。如示例1 #示例1 >>> class My: ... def __init__(...
  • #定义类 ... #名称 name="张三"; #构造方法 def __init__(self): print ("----构造方法被调用----") #析构方法 def __del__(self): print("----析构方法被调用------") ...
  • 一、说明:C++项目中用到python相关的知识,这两天研究了一下C++与python的混合编程,网上有很多这方面的介绍,但是怎么使用python类的构造函数中传参的介绍却没有,这里研究一下,分享出来。(C++和python相互调用的...
  • python def 函数构造

    千次阅读 2019-04-22 19:55:00
    def 函数构造: 1、def 是一个声明: 格式: def Xxname_XXtype(位置参数,关键字参数): 2、def 声明的作用: 给下面的“代码块”命一个名。在随后调用该声明名称时 复制“代码块”到调用位置。 3、def 声明...
  • 类中构造函数的作用 构造函数的作用 构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作, 当创建 对象时, 对象会自动调用它的构造函数。实例化对象时是可以传入参数的,这些参数会自动传入__init__()...
  • Python内置函数

    千次阅读 多人点赞 2019-05-10 15:10:36
    Python内置函数Python abs()函数Python all() 函数Python any() 函数Python basestring() 函数Python bin() 函数Python bool() 函数Python bytearray() 函数Python callable() 函数Python chr() 函数Python ...
  • 1.Python像其他的OOP语言一样在类里面会有构造和析构函数... ...他们只是在这个对象...构造函数: __init__ 这个函数在用代码生成一个对象的实例的时候就会被调用 析构函数: __del__ 这个函数一般很难知道在哪里会被调用
  • 构造函数__inti__() new()方法:用于创建对象,但一般无需重定义该方法。 init()方法:初始化创建好的对象,初始化指的是:“给实例属性赋值”。 一个python对象包含: 1.id:(identity)标识符 2.type:(对象类型...
  • 子类继承父类后,可以选择是否调用父类的构造函数(即__init__函数)。 1. 不调用父类构造函数 如果子类不想调用父类的构造函数,就需要写出自己的构造函数: class Parent(object): def __init__(self, number): ...
  • python类中定义多个构造函数

    万次阅读 2018-09-20 23:56:33
     &...这个时候,就需要我们创建多个构造函数了。     下面是一个简单的实例: import time class Date: #主构造函数 def __init__(self...
  • 1.Python像其他的OOP语言一样在类里面会有构造和析构函数... ...他们只是在这个对象生成和销毁的...构造函数: __init__ 这个函数在用代码生成一个对象的实例的时候就会被调用 析构函数: __del__ 这个函数一般很难知
  • Python 子类继承父类构造函数说明

    千次阅读 多人点赞 2018-12-29 17:41:49
    (1) 如果在子类中需要的构造方法就需要显示的调用父类的构造方法,或者不重写父类的构造方法。 子类不重写__init__,实例化子类时,会自动调用父类定义的__init__。 实例: class Father(object): def __init...
  • Python 类的构造函数 特殊属性 特殊方法 应用模块
  • [编程基础] Python lambda函数总结

    千次阅读 多人点赞 2020-06-25 09:56:15
    Python lambda函数教程展示了如何在Python中创建...Python lambda函数也称为匿名函数,是没有名称的内联函数。它们是用lambda关键字创建的。这是内置Python函数范型的一部分。 Python lambda函数仅限于一个表达式。它
  • Python 内置函数详解

    千次阅读 多人点赞 2019-11-13 17:21:35
    Python 的内置函数数量众多,功能强大,如果能够灵活运用,必将极大地提高编程效率。不过,在大家公认的所谓内置函数里面,有很多并不是真的函数,而是内置类,只是因为使用起来和真正的函数没有什么不同,所以也就...
  • python内置函数详解

    千次阅读 多人点赞 2019-10-09 15:54:44
    python 69个内置函数进行详细介绍,并且进行了分类。
  • Python入门基础篇 No.68 —— 构造函数__init__ 文章目录Python入门基础篇 No.68 —— 构造函数__init__前言一、__init__构造方法和__new__方法总结 前生篇:类的定义_类和对象的关系 前言 一、__init__构造...
  • 有时候需要定义一个枚举类型,但不想创建一个新类来继承创建,就可以直接使用它的构造函数来创建一个枚举类型,如下面的例子:#python 3.6 #蔡军生 #http://blog.csdn.net/caimouse/article/details/51749579 # ...
  • Python学习笔记3.2-python内置函数大全

    万次阅读 2016-11-22 22:28:09
    学习python不可避免的首先要了解python的内置函数,熟悉了这些以后可以给编程带来很大的方便。
  • 两种方式如下: super 关键字: super(子类,self).__init__(参数1,参数2,....) 经典写法: 父类名称.__init__(self,参数1,参数2,...)
  • 我们前面说过的一个Python对象包含三个部分: id(identity识别码) type(对象类型) value(对象的值) 现在,我们可以更进一步的说,一个python对象包含如下的部分: id(identity识别码,一般是存储地址) type(对象...
  • 本文内容主要介绍了python 子类调用父类的构造函数实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧!!!当子类继承父类后,需要调用父类的方法和属性时,需要调用父类的初始化函数在子类中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,475
精华内容 21,390
关键字:

python构造函数的名称

python 订阅