精华内容
下载资源
问答
  • python类初始化属性在def init()中定义,实例化对象后可直接调用 python类初始化属性在def func()中定义,实例化对象后,先调用调用函数,再调用属性 class Mdata(object): def __init__(self): self.mydata1 = ...

    python类初始化属性在def init()中定义,实例化对象后可直接调用
    python类非初始化属性在def func()中定义,实例化对象后,先调用调用函数,再调用属性

    class Mdata(object):
        def __init__(self):
            self.mydata1 = 123
        def showdata(self):
            self.mydata2 = self.mydata1*2
    a = Mdata()                 # 类实例化
    print(a.mydata1)         # 初始化属性可直接调用
    try:                              # 不能在未调用非__init__函数之前调用非__init__中定义的实例化属性
        a.mydata2
        print('Try Success.')
    except:
        print('Try Failed.')    # 非初始化属性先调用函数,在调用属性值
        a.showdata()           # 先调用类函数
        print(a.mydata2)     # 再调用属性值
    
    展开全文
  • Python类初始化 (Python class init) Whenever a beginner starts learning the Python programming language, they come across something like __init__ which usually they don’t fully understand. In this ...

    Python类初始化 (Python class init)

    python class init, python __init__ function

    Whenever a beginner starts learning the Python programming language, they come across something like __init__ which usually they don’t fully understand. In this lesson, we will try to understand the use of __init__ completely with good examples. Let’s get started.


    每当初学者开始学习Python编程语言时,他们都会遇到诸如__init__东西,通常他们并不完全了解。 在本课程中,我们将通过良好的示例尝试完全理解__init__的用法。 让我们开始吧。

    了解python类的初始化函数 (Understanding python class init function)

    Let’s see a short code snippet and see what we’re trying to understand:

    让我们看一个简短的代码片段,看看我们试图理解什么:

    class Student(object):
    
        def __init__(self, something):
            print("Init called.")
            self.something = something
    
        def method(self):
            return self.something 
    
    my_object = Student('Jetty')

    What does the __init__ method do? Why is it necessary? Let’s find out.

    __init__方法有什么作用? 为什么有必要? 让我们找出答案。

    python init方法有什么作用? (What does the python init method do?)

    When a new instance of a python class is created, it is the __init__ method which is called and proves to be a very good place where we can modify the object after it has been created.

    当创建一个新的python类实例时,将调用__init__方法,事实证明这是一个非常好的地方,我们可以在创建对象后修改该对象。

    This means that when we create a new instance of the class like:

    这意味着当我们创建类的新实例时,如下所示:

    my_object = Student('Jetty')

    In above snippet, when we called Student with ‘Jetty’ (which could be actually anything), it gets passed to the __init__ function as the argument, Jetty. Let’s try to run this script now:

    python class init

    在上面的代码片段中,当我们用“ Jetty”(实际上可以是任何东西)调用Student时,它将作为参数Jetty传递给__init__函数。 让我们尝试现在运行此脚本:

    __init__是构造函数吗? (Is __init__ the constructor?)

    Actually yes. __init__ is an oop construct. __init__ is the constructor for a class. Just like mentioned above, the __init__ method is called as soon as the memory for the object is allocated. Let’s see what we did above in our snippet:

    其实,是。 __init__是一个oop构造。 __init__是类的构造函数。 就像上面提到的那样,一旦分配了对象的内存,就会调用__init__方法。 让我们看看上面片段中的操作:

    def __init__(self, something):
        self.something = something

    Using self is important because if you don’t and implement your method like:

    使用self很重要,因为如果您不这样做,则可以实现以下方法:

    def __init__(self, something):
        _something = something

    The something parameter would be stored in variables on the stack and would be discarded as soon as the __init__ method goes out of scope.

    something参数将存储在堆栈中的变量中,并且当__init__方法超出范围时将被丢弃。

    __init__如何与继承一起使用? (How __init__ works with Inheritance?)

    When we have a class inheriting from a superclass, __init__ method works the same way. Let us try to demonstrate what happens when we try to initialise a child class:

    当我们有一个从超类继承的类时, __init__方法的工作方式相同。 让我们尝试演示在尝试初始化子类时会发生什么:

    class User(object):
        def __init__(self, something):
            print("User Init called.")
            self.something = something
    
        def method(self):
            return self.something 
    
    class Student(User):
        def __init__(self, something):
            User.__init__(self, something)
            print("Student Init called.")
            self.something = something
    
        def method(self):
            return self.something 
    
    my_object = Student('Jetty')

    In above code, when we initialised the Student object, this will be the output which is created when we ran the above program:

    python init super class inheritance

    So, before the child class, the parent’s class init was called. You can control this by modifying the order in which the init is called for a parent or a child class. Read more at python inheritance.

    在上面的代码中,当我们初始化Student对象时,这将是运行上述程序时创建的输出:

    因此,在子类之前,将调用父类的init。 您可以通过修改父类或子类的init调用顺序来控制它。 在python继承中阅读更多内容。

    结论 (Conclusion)

    To summarise, python __init__ is what is called as a constructor in other OOPs languages such as C++ and Java. The basic idea behind this is, it a special method which is automatically called when an object of that Class is created.

    总而言之,python __init__在其他OOP语言(例如C ++和Java)中称为构造函数。 这背后的基本思想是,它是一种特殊的方法,当创建该Class的对象时会自动调用该方法。

    翻译自: https://www.journaldev.com/18397/python-class-init

    展开全文
  • python类初始化属性在def __init__()中定义,实例化对象后可直接调用 python类初始化属性在def func()中定义,实例化对象后,先调用调用函数,再调用属性 代码 class Mdata(object): def __init__(self): ...
    • python类初始化属性在def __init__()中定义,实例化对象后可直接调用
    • python类非初始化属性在def func()中定义,实例化对象后,先调用调用函数,再调用属性

    代码

    class Mdata(object):
        def __init__(self):
            print('initialization')
            #self._build_model()
            self.mydata1 = 123
        def showdata(self):
            self.mydata2 = self.mydata1*2
    
    a = Mdata()                 # 类实例化
    print(a.mydata1)            # 初始化属性可直接调用
    
    try:                        # 不能在未调用非__init__函数之前调用非__init__中定义的实例化属性
        a.mydata2
        print('Try Success.')
    except:
        print('Try Failed.')    # 非初始化属性先调用函数,在调用属性值
        a.showdata()            # 先调用类函数
        print(a.mydata2)        # 再调用属性值

    运行结果

    initialization
    123
    Try Failed.
    246
    展开全文
  • 更好一点的方法可以使用python的深拷贝。 import copy class Node (object) : def __init__ (self ,childrenList=[], name = '.' ) : self.name = name self.childrenList = copy.deepcopy...

    问题描述

    刚宿舍的问了个问题,简单的说就是编程遇到了如下的这种情况:

    class Node(object):
        def __init__(self ,childrenList=[], name = '.' ):
            self.name = name
            self.childrenList = childrenList
    a = Node(name = 'wj')
    b = Node()
    a.childrenList.append(1)
    print(a.childrenList)
    print(b.childrenList)

    输出如下:

    [1]
    [1]

    原因

    很奇怪,实例a的赋值,导致b中变量childrenList也变了。

    直觉上来说,应该是函数参数赋值是值传递还是引用传递的问题,当然本质上还是传的值,只是赋值对象是可变还是不可变的问题。

    所以,来测试一下:

    class Node(object):
        def __init__(self ,childrenList=[], name = '.' ):
            self.name = name
            self.childrenList = childrenList
            print("childrenList",id(self.childrenList))
            print("name",id(self.name))
    a = Node(name = 'wj')
    b = Node()
    a.childrenList.append(1)
    print(a.childrenList)
    print(b.childrenList)

    结果

    childrenList 2754369477512
    name 2754369477232
    childrenList 2754369477512
    name 2754335175152

    可以看到,name字符串在两个实例中的内存位置不同,但childrenList却是同一个,那就会出现1中的结果。

    修改

    最简单的可以直接使用self.childrenList=[]赋值,这样的话就是用不到参数中的值。

    更好一点的方法可以使用python的深拷贝。

    import copy
    class Node(object):
        def __init__(self ,childrenList=[], name = '.' ):
            self.name = name
            self.childrenList = copy.deepcopy(childrenList)
    a = Node(name = 'wj')
    b = Node()
    a.childrenList.append(1)
    print(a.childrenList)
    print(b.childrenList)

    这样,生成的实例中childrenList就会指向不同的单位。

    展开全文
  • 本文给大家介绍一下Python初始化时候的特殊方法,通过实例给大家做了分析,一起来学习下。
  • 主要介绍了python类继承与子类实例初始化用法,实例分析了Python类的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • Python继承初始化问题

    千次阅读 2019-07-25 14:06:00
    但是如果要实例化子的对象,则只能传入父类的初始化函数对应的参数,否则会出错。 Child没有初始化函数 class Parent: def __init__(self,name): self.name = name print("初始化爸爸",name) def f(self): .....
  • python 初始化 元组 Python | 重新初始化元组 (Python | Reinitializing tuple) In this tutorial, we will learn how can we reinitialize a tuple with a new set of elements/objects? 在本教程中,我们将学习...
  • Python初始化列表

    万次阅读 2019-04-29 18:17:49
    Python初始化列表 下面我们就来介绍在Python中初始化列表(我们创建大小为1000并使用零初始化的列表)的一些方法。 1)方法一:使用for循环和append()函数 arr = [] for i in range(1000): arr.append(0) 2)方法...
  • PYTHON 定义,属性,初始化

    千次阅读 2020-05-01 17:12:02
    文章目录PYTHON 类定义,属性,初始化类定义类的私有属性类方法类的初始化和析构初始化析构 PYTHON 类定义,属性,初始化 为了代码的编写方便简洁,引入了类的定义; 一般,使用 class 语句来创建一个新类,class...
  • Python类初始化方法

    千次阅读 2018-03-13 11:10:53
    摘自Mastering Object-oriented Python隐式的基类——objectPython是面向对象程序设计语言,有一个类似root的基础object。任何自定义的,都会隐式继承object。class X: pass print(X.__class__) # <...
  • python 变量初始化空列表

    千次阅读 2018-11-21 17:33:27
    python 不能写new_loss=old_loss=[] 这样 两个变量实际上是同一个list 要分开写new_loss=[] Old_loss=[] ... #初始化方法一 new_loss = [] old_loss = [] #初始化方法二  new_loss = old_loss ...
  • Python延迟初始化(lazy property)

    千次阅读 2017-08-28 16:39:11
    Python 对象的延迟初始化是指,当它第一次被创建时才进行初始化,或者保存第一次创建的结果,然后每次调用的时候直接返回该结果。 延迟初始化主要用于提高性能,避免浪费计算,并减少程序的内存需求。 property...
  • Python初始化一个5 x 3每项为0的数组,最好方法是: multilist=[[0forcolinrange(5)]forrowinrange(3)] 我们知道,为了初始化一个一维数组,我们可以这样做: alist=[0]*5 没错,那我们初始化一个二维数组...
  • python——初始化数组

    万次阅读 2018-12-30 09:23:27
    因为画图中x轴与y轴的数据通常为数组格式的数据,所以先总结一下如何初始化数组: (1)list得到数组 # 通过array函数传递list对象 L = [1, 2, 3, 4, 5, 6] a = np.array(L) # 若传递的是多层嵌套的list,...
  • Python字典初始化三种方式

    万次阅读 2019-07-03 23:16:40
    Python字典初始化三种方式 In [1]: from collections import defaultdict In [3]: b = dict() In [4]: c = {} In [5]: a = defaultdict(defaultdict) In [6]: print(type(a),type(b),type(c)) <class '...
  • python 自定义初始化对象

    万次阅读 2020-06-29 18:13:41
    python自定义,需用到class关键字 ...初始化对象直接在后面添加括号即可 # 初始化对象 p = Person('汉城节度使', '50') 获取对象信息,直接对象.属性即可 # 打印对象信息 print("name:" + p.nam.
  • 以上是关于Fruit的定义,接下来实例的时候出现问题,代码如下: apple = Fruit(has_not_harvest,setColor('green')) 求问为什么会有弹出错误显示如下: NameError: name 'has_not_harveest' is not defined!...
  • python:初始化方法( __init__)

    千次阅读 2019-02-06 22:28:20
    使用类名()创建对象时,Python解释器会首先在内存中开辟一个足够的空间可以存下创建的对象,然后调用初始化方法,在初始化方法中给对象的所有属性设置初始值(为属性设置初始值的方法叫做初始化方法),对象的初始...
  • python 的继承及初始化

    千次阅读 2019-05-17 09:38:39
    #初始化基类函数方法2:使用super函数,每个都被初始化一次,建议方式 super(C3, self).__init__(**kwargs) #按照继承关系逐步初始化基类 def myprint(self): #函数重写 print 'cbase3' if __name__=='__...
  • Python字典初始化和装载数据

    千次阅读 2019-04-25 00:09:55
    from collections import defaultdict c = {} c.setdefault('a', []).append(1) c.setdefault('a', []).append(2) c.setdefault('b', []).append(4) d = defaultdict(list) d['a'].append(1) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 420,017
精华内容 168,006
关键字:

python类初始化

python 订阅