-
2020-12-08 04:27:44
用第二个方法是
classPerson:
defsayHi(self,name):
self.name=name
print'Hello,mynameis',self.name
p=Person()
p.sayHi('Swaroop')
为什么报错的知识点是对象的初始化,可以去查查
多谢授人以渔
__init__是你的初始化对象的构造方法,
def__init__(self,name):
self.name=name
会把传进的
'Swaroop'赋给属性name,你去掉
__init__那就是默认你的构造方法不含参数,这时候你在传一个参数进去当然会报错。
嗯好的谢谢回复
@嘿嘿嘿嘿嘿:建议你去学习下OO的思想,看完就会明白很多。也就是说python就是规定,一个模块里面如果要有参数,就需要放一个__init__在开始是吧。
http://csscn.org/server/python/ch11s05.html
看下这个
__init__就是类似cpp里面的构造函数,和他对应的还有个析构函数__del__
也谢谢其他热心的朋友。。__init__类似与C++或者Java,C#里面的构造函数,只不过C++,Java,C#里面的this参数是隐藏的,不需要用户显示的写出来,但是在python,this参数(你可以自己命名为任意合法变量名称,不一定是self)需要自己手动显示的定义,并且放在第一个参数。类似的F#语言在定义类的时候也是使用python这种方式,还有其他脚本语言也是这样的。就是说python就是规定模块里面需要放一个__init__在开始吧
__init__相当于构造函数,而且在Python类中,方法必须带有self参数。。。
后面的要求觉得有点奇葩哈。。
详见:
【整理】Python中:self和__init__的含义+为何要有self和__init__
更多相关内容 -
PHP面向对象程序设计之构造方法和析构方法详解
2021-01-02 15:59:45而析构方法是对象在销毁之前最后一个被对象自动调用的方法,这也是我们在对象中使用析构方法的原因。所以通常使用构造方法完成一些对象的初始化工作,使用析构方法完成一些对象在销毁之前的清理工作。 1.构造方法 在... -
析构方法
2019-09-06 20:34:27析构方法说明: 1.析构方法会自动调用 2.析构方法主要用于销毁资源(比如释放数据库的链接,图片资源…销毁某个对象…); 析构函数会在到对象的所有的引用都被删除或者当对象被显示销毁时执行 3.析构方法调用顺序是,...析构方法说明:
1.析构方法会自动调用
2.析构方法主要用于销毁资源(比如释放数据库的链接,图片资源…销毁某个对象…);
析构函数会在到对象的所有的引用都被删除或者当对象被显示销毁时执行
3.析构方法调用顺序是,先创建的对象后被销毁
4. 析构方法什么时候被调用
(1) 当程序(进程结束)退出时
(2) 当一个对象称为垃圾对象的时候,该对象的析构方法也会被调用,
(3) 所谓垃圾对象,就是指,没有任何变量再引用它.
(4) 一旦一个对象成为垃圾对象,析构方法就会立即调用析构方法小结:
①php5加入的的析构方法function __destruct()
②析构方法没有返回值也不接受参数
③主要作用是释放资源的操作,并不是销毁对象本身。
④在销毁对象前,系统自动的调用该类的析构方法
⑤一个类最多只有一个析构方法。
实例:<?php //创建一个人类 class Person { //下面是人的成员属性 public $name; //人的名子 public $sex; //人的性别 public $age; //人的年龄 //定义一个构造方法参数为姓名$name、性别$sex和年龄$age public function __construct($name, $sex, $age) { //通过构造方法传进来的$name给成员属性$this->name赋初使值 $this->name = $name; //通过构造方法传进来的$sex给成员属性$this->sex赋初使值 $this->sex = $sex; //通过构造方法传进来的$age给成员属性$this->age赋初使值 $this->age = $age; } //这个人的说话方法 function say() { echo "我的名子叫:" . $this->name . " 性别:" . $this->sex . " 我的年龄是:" . $this->age . "<br/>"; } //这是一个析构函数,在对象销毁前调用 function __destruct() { echo "再见" . $this->name . "<br/>"; } } //通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄 $p1 = new Person("张三", "男", 20); $p2 = new Person("李四", "女", 30); $p3 = new Person("王五", "男", 40); //下面访问$p1对象中的说话方法 $p1->say(); //下面访问$p2对象中的说话方法 $p2->say(); //下面访问$p3对象中的说话方法 $p3->say(); ?> ———————————————— 版权声明:本文为CSDN博主「守护那份情」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/zjs_csdns/article/details/100085867
运行结果:
我的名子叫:张三 性别:男 我的年龄是:20
我的名子叫:李四 性别:女 我的年龄是:30
我的名子叫:王五 性别:男 我的年龄是:40
再见王五
再见李四
再见张三 -
php构造方法中析构方法在继承中的表现
2020-12-19 13:28:42本文为大家分享了php构造方法之析构方法在继承中的表现,供大家参考,具体内容如下 ...子类定义了自己的析构方法,则不会自动调用父类的析构方法,但可以手动调用:parent::__destruct()。重写overr -
Python之析构方法
2022-02-26 15:45:42析构方法: 释放内存,做释放内存前的准备工作 触发机制:析构方法会在对象被销毁时自动触发 作用:关闭一些开发的资源 注意:是对象被销毁时触发了这个方法,而不是这个方法销毁了对象 对象会在哪些情况下被销毁...""" 析构方法: 释放内存,做释放内存前的准备工作 触发机制:析构方法会在对象被销毁时自动触发 作用:关闭一些开发的资源 注意:是对象被销毁时触发了这个方法,而不是这个方法销毁了对象 对象会在哪些情况下被销毁? 1.当程序执行完毕,内存中的所有资源都会被销毁释放 2.使用del 删除时 3.对象不再被引用时,会自动销毁 创建实例对象时自动被调用: __new__:创建实例对象 Animal monkey = new Animal() __init__:初始化数据属性 __del__:析构方法 """ class Animal: """初始化数据属性的方法""" def __init__(self,gender,kinds,legs): print("初始化方法被调用") self.gender = gender self.kinds = kinds self.legs = legs def eat(self): print(f"{self.kinds}eating...") def __del__(self): print("析构方法被调用") monkey = Animal("wukongSun","猴赛类",4) monkey.eat() #3.对象不再被引用时,会自动销毁 Animal("haha","gg",6) print("析构方法被调用,,,,")
""" open().close() 通过open().close(),释放open函数的内存 """ class Open: def __init__(self,filePath,mode="r",encode="utf-8"): self.file = open(filePath,mode=mode,encoding=encode) def write(self): temp = input("请输入:") self.file.write(temp) def __del__(self): print("文件流即将关闭,析构方法被调用") self.file.close() #创建了一个实例对象(文件流file) file = Open("a.txt","w") file.write()
class Car: def __init__(self,brand): self.brand = brand print(f"{self.brand}被创建") def __del__(self): print(f"{self.brand}被销毁") #1.实例化后调用和销毁的顺序 # baoma = Car("宝马") # lanbojini = Car("兰博基尼") # falali = Car("法拉利") """ 宝马被创建 兰博基尼被创建 法拉利被创建 宝马被销毁 兰博基尼被销毁 法拉利被销毁 """ #1.实例化后没有被调用和销毁的顺序 Car("宝马") Car("兰博基尼") Car("法拉利") """ 宝马被创建 宝马被销毁 兰博基尼被创建 兰博基尼被销毁 法拉利被创建 法拉利被销毁 """
-
java-析构方法
2022-03-20 11:52:46在 Java 的 Object 类中还提供了一个 protected 类型的 finalize() 方法,因此任何 Java 类都可以覆盖这个方法,在这个方法中进行释放对象所占有的相关资源的操作。 对象的 finalize() 方法具有如下特点: 垃圾回收...在 Java 的 Object 类中还提供了一个 protected 类型的 finalize() 方法,因此任何 Java 类都可以覆盖这个方法,在这个方法中进行释放对象所占有的相关资源的操作。
对象的 finalize() 方法具有如下特点:
垃圾回收器是否会执行该方法以及何时执行该方法,都是不确定的。
finalize() 方法有可能使用对象复活,使对象恢复到可触及状态。
垃圾回收器在执行 finalize() 方法时,如果出现异常,垃圾回收器不会报告异常,程序继续正常运行。纯文本复制 protected void finalize() { // 对象的清理工作 }
Counter 类在构造方法中增值,在析构方法中减值。如下所示为计数器类 Counter 的代码:
public class Counter { private static int count = 0; // 计数器变量 public Counter() { // 构造方法 this.count++; // 创建实例时增加值 } public int getCount() { // 获取计数器的值 return this.count; } protected void finalize() { // 析构方法 this.count--; // 实例销毁时减少值 System.out.println("对象销毁"); } }
创建一个带 main() 的 TestCounter 类对计数器进行测试,示例代码如下:
public class TestCounter { public static void main(String[] args) { Counter cnt1 = new Counter(); // 建立第一个实例 System.out.println("数量:"+cnt1.getCount()); // 输出1 Counter cnt2 = new Counter(); // 建立第二个实例 System.out.println("数量:"+cnt2.getCount()); // 输出2 cnt2 = null; // 销毁实例2 try { System.gc(); // 清理内存 Thread.currentThread().sleep(1000); // 延时1000毫秒 System.out.println("数量:"+cnt1.getCount()); // 输出1 } catch(InterruptedException e) { e.printStackTrace(); } } }
数量:1
数量:2
对象销毁
数量:1 -
python之类的析构方法
2022-07-08 12:11:00当需要删除一个对象来释放类所占的资源时,Python解释器会调用另外一个方法,这个方法就是析构方法。 例:比较下面两个程序,分析输出结果。 结果如下。 结果如下。 通过结果我们发现第一个程序... -
如何使用php析构方法
2021-04-21 09:01:39【摘要】PHP即“超文本...下面是如何使用php析构方法,让我们一起来看看如何使用php析构方法的具体内容吧!如何使用php析构方法使用php析构方法:1、名字为固定为【_ _destruct】;2、析构方法在一个对象被【销毁】... -
第8.18节 Python类中内置析构方法__del__
2021-01-30 01:15:19一、引言基本上所有支持OOP设计的语言都支持析构方法(也称析构函数),析构方法都是在对象生命周期结束时调用,一般用来实施实例相关生命周期内访问数据的扫尾工作,包括关闭文件、释放内存、输出日志、清理数据等。... -
java析构方法详解
2021-02-25 20:11:29之前给大家介绍了一下java构造方法,那么下面要给大家讲到的就是java析构方法,下面一起通过文章来了解一下吧。析构方法和构造方法不同,真好是相反的,在对象脱离其作用域的时候,系统自动执行析构方法。析构方法... -
Swift 构造方法与析构方法
2022-04-19 18:18:49// // StructureMethod.swift // SwiftCode ... swift语言要求结构体和类必须在构造方法结束前完成其中存储属性的构造,延时存储属性例外。因此,开发者在设计类时,往往采用两种方法来处理存储属性: <1. -
C# 析构方法
2022-04-17 10:16:35看是否是托管资源还是非托管资源,判断是否有DIspose()方法,如果有,则是非托管资源 2.Close()和Disposable() CLose()方法关闭对象,没有完全释放 Disposable()方法完全释放了,再使用的时候需要重新创建 ... -
python构造方法和析构方法
2022-05-27 06:11:33python的构造方法作用: *构造方法是一种特殊方法(init)以两个下划线开头,两个下划线结尾,用于类的初始化。 *如果类中定义了构造方法,在定义对象时会自动调用构造方法 *构造方法通常用来初始化对象变量 构造方法的... -
Java析构方法是什么?
2022-04-20 18:04:05析构方法与构造方法相反,当对象脱离其作用域时(例如对象所在的方法已调用完毕),系统自动执行析构方法。析构方法往往用来做清理垃圾碎片的工作,例如在建立对象时用 new 开辟了一片内存空间,应退出前在析构方法... -
python基础:14.面向对象之构造和析构方法
2020-12-08 04:27:44method') def __del__(self):#析构方法 print("我是析构方法:__del__") if __name__ == '__main__': Son().method() # 运行结果: 我是构造方法:__init__ 我是普通方法:method 我是析构方法:__del__ 总结: 定义... -
类的构造方法、析构方法、实例方法
2020-11-28 10:19:33类的构造方法、析构方法、实例方法上一个小节我们学习了 Python 的类属性和实例属性的知识点,这个小节我们还是会学习关于类的知识。这节课我们会学习类的构造方法、析构方法和实例方法。1. 实例方法1.1 定义实例... -
Python构造方法、析构方法和单例模式
2020-11-28 10:19:28一、__init__()方法__init__()通常在初始化一个类实例的时候调用,如:classStudent(object):def __init__(self,name,age):self.name=nameself.age=agestu= Student('weiheng',20) #创建一个Student实例,并且对对象... -
PHP构造方法和析构方法(__construct和__desctruct)
2020-11-28 10:19:29构造方法是在创建对象时自动调用的方法,析构方法是在对象销毁时自动调用的方法。PHP 构造方法构造方法常用的场景是在创建对象时用来给变量赋值,构造方法使用__construct定义。使用示例如下:执行以上程序的输出... -
PHP类的声明与实例化及构造方法与析构方法详解
2021-01-21 15:59:48本文实例讲述了PHP类的声明与实例化及构造方法与析构方法。分享给大家供大家参考,具体如下: <?php class human{ public static $leg=2; public $name = 'leo'; public $age = '25'; public function cry()... -
PHP 面向对象编程 - 构造方法和析构方法
2019-06-17 21:36:442. 析构方法。 1. 构造方法; 构造方法是 PHP5 中出现的一个新的特性,在实例化对象的时候自动调用。 在实例化的时候可以给类进行一些赋初始值的操作。 # 构造方法语法格式 [修饰符] function __... -
php构造方法与析构方法
2019-06-22 15:34:00“方法”也叫做“函数” “访问”也叫做“调用” 构造方法也称之为“构造函” 构析方法也称之为“构析函数” 构造方法的定义与调用 <?php header("Content-type:text/html;charset=utf-8"); class Girl1{ ... -
python的析构方法__del__
2020-12-08 04:27:33/usr/bin/envpython#-*-coding:utf-8-*-#File:析构方法del.py#Author:HuXianyong#Date:2018/7/9classFoo:#初始化方法#创建完对象后会自动被调用def__init__(self,name):print('__init__方法被调用')self.name=name#... -
智一面PHP面向对象(二)- 构造方法和析构方法
2021-03-16 19:30:581 构造方法 构造方法: 构造方法存在于每个声明的类中,它执行一些初始化的任务。 如果类中没有直接声明构造方法,那么类会默认生成一个没有参数且内存为空的构造方法。 声明构造方法,名称必须以两个下划线开头,... -
【java基础】构造方法和析构方法
2020-07-09 15:24:04背景:我记得之前学MFC时, 或是学哪门面对对象编程的...java里好像是没有析构方法的说法,只有一个finalize(),一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用finalize()方法,并且在下一次垃圾回收动作发 -
构造方法,析构方法
2019-02-08 19:53:01构造方法(_ _construct): 构造方法,是一个特殊的方法: 1,名字是固定的:_ _construct; 2,该方法通常都不要我们自己调用,而是在new一个对象的时候会自动调用。 3,该方法主要的目的是为了在new一个对象的...