zoukankan      html  css  js  c++  java
  • python编程基础之三十三

    构造方法:

    • 目的:构造方法用于初始化对象,可以在构造方法中添加成员属性

    • 触发时机:实例化对象的时候自动调用

    • 参数:第一个参数必须是self,其它参数根据需要自己定义

    • 返回值:不返回值,或者说返回None,不应该返回任何其他值

    1 def __init__(self,arg1,arg2....):
    2         函数体
    3 #参数:arg1,agr2...根据需要自己定义
    4 #如果自己不定义构造方法,系统自动生成一个构造函数
    5 def __init__(self):
    6   pass
    View Code

    如果自己没有写构造方法,系统会自动生成一个构造方法,里面除了self,没有任何参数,

     1 class Dog(object):
     2     def __init__(self,name,kind,age):
     3         self.name = name  #定义对象属性,这个类所有的对象都具有该属性
     4         self.kind = kind  #成员属性必须通过self.引用,否则是普通变量
     5         self.age = age
     6 
     7     def bark(tmp):
     8         print('我是小可爱')
     9 
    10 dingding = Dog('大黄','泰迪',3)
    11 print('我是可爱的%s犬,%s,我今年%d岁了' % (dingding.kind, dingding.name, dingding.age))
    View Code

    析构方法:

    • 目的:对象销毁时,释放资源

    • 时机:对象销毁时由系统自动调用

    • 参数:除了self外,没有其他参数

    • 返回值:不返回值,或者说返回None。

     1 def __del__(self): 2 #to do 

     1 class Dog(object):
     2     #构造
     3     def __init__(self,name,kind,age):
     4         self.name = name
     5         self.kind = kind
     6         self.age = age
     7     #析构
     8     def __del__(self):
     9         print('拜拜了,二十年后又是一条好汉')
    10     def bark(tmp):
    11         print('我是小可爱--丁丁')
    12 
    13 dingding = Dog('丁丁','泰迪',3)
    14 print('我是可爱的%s犬,%s,我今年%d岁了' % (dingding.kind, dingding.name, dingding.age))
    15 del dingding  #销毁对象,自动调用析构方法
    16 
    17 #在函数中对象,当函数结束运行时,自动析构
    18 def test():
    19     td = Dog('当当','泰迪',3)
    View Code

     还介绍一个魔术方法比较常用:__str__()

    这个魔术方法可以让你定义的对象输出的时候不会是一个地址了,看到的可以是你希望看到的字符串,

    • 目的:将对象转化为字符串

    • 时机:凡是涉及对象向字符串转换的都会调用

    • 参数:self

    • 返回值:字符串

     1 class Animal:
     2     def __init__(self,name,age):
     3         self.name = name
     4         self.__age =age
     5     def __str__(self):
     6         return "name : {} age : {}".format(self.name,self.__age)
     7     def __repr__(self):
     8         return  self.__str__()
     9 a1 = Animal('zhu',3)
    10 print(a1)
    11 print('我是一头可爱的 ' + str(a1)
    __str__()
  • 相关阅读:
    【PAT甲级】1043 Is It a Binary Search Tree (25 分)(判断是否为BST的先序遍历并输出后序遍历)
    Educational Codeforces Round 73 (Rated for Div. 2)F(线段树,扫描线)
    【PAT甲级】1042 Shuffling Machine (20 分)
    【PAT甲级】1041 Be Unique (20 分)(多重集)
    【PAT甲级】1040 Longest Symmetric String (25 分)(cin.getline(s,1007))
    【PAT甲级】1039 Course List for Student (25 分)(vector嵌套于map,段错误原因未知)
    Codeforces Round #588 (Div. 2)E(DFS,思维,__gcd,树)
    2017-3-9 SQL server 数据库
    2017-3-8 学生信息展示习题
    2017-3-5 C#基础 函数--递归
  • 原文地址:https://www.cnblogs.com/higer666/p/9454473.html
Copyright © 2011-2022 走看看