python学习笔记6--类,方法,析构

# *类

## 定义,属性,初始化,析构

#面向对象,eg:自己做饭or别人做饭

#面向过程,eg:煮饭=洗菜-切菜-抄菜-出锅-吃饭

#类 封装一些共有的事物,把具有共有特点的事物放在一个类里

#命名规则:驼峰命名法(首字母大写)

eg:

class GirlFriend:

    _sex='女'

    hobby='做饭'

    __age=18

xiaohua=GirlFriend#此处可加()也可不加,不加括号使用同原地址,加括号另开一空间

ruhua=GirlFriend()

print(xiaohua._sex,xiaohua.hobby)

print(id(xiaohua),id(ruhua))

xiaohua.study='超会学习'

ruhua.k='as'#实例(新地址)修改属性,不会影响原类的属性

print(ruhua.study)

print(xiaohua.k)#-->报错

#_sex 一个下划线 只是做一个简单的标记,可以正常使用

#__age 两个下划线代表特有属性,实例不能直接访问,可通过dir查看访问方式

print(xiaohua.__age)#-->报错

print(xiaohua._GirlFriend__age)#dir查询后

#注:python里无绝对私有

## 方法

#类里放函数既是方法

eg:

class Person:

    def __init__(self,name,girlfriend):#魔法方法,在python中以双下划线开头和结尾的称为魔法方法 每一个魔法方法都有其特有的作用

        self.name=name#__init__-->作用:初始化,实例化时传属性

        self.girlfriend=girlfriend

    def num(self):#self 谁去使用self self就是谁

        # print(xiaohong.name)

        # print(self.name)

        print('self的id是%s'%id(self))

        print(self.name)

    def op(self):

        print('%s和%s大吃一顿'%(self.name,self.girlfriend))

#xiaohong=Person('1','2')#实例化(实例时无法添加属性)

#xiaohong.name='xiaohong'#此处self=小红(实例化后可添加实例属性)

# xiaohong.num()

# print('小红的id是%s'%id(xiaohong))

# xiaohei=Person()

# xiaohei.num()#新起一个地址后,self的id值也随之变化

hans=Person('寒沙','小姐姐')

hans.op()

hans.num()#实例属性只针对于该实例

# 析构

#clear 删除所有元素 del 释放该序列空间

#python的垃圾回收机制 程序运行完后所有内存空间都会释放

eg:

# li=[12,3,4]

# del li#释放掉该空间

# print(li)#报错

class Person:

    def __del__(self):

        print('这里调用了del方法,在删除全部指向后')

x=Person()

del x#这里释放了Preson所以后面不会调用del方法

print('*'*10)#程序执行完后调用del方法

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 3,294评论 0 9
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 3,245评论 2 9
  • 一、面向对象思想 1.面向对象思想设计 基于哲学观点:万物皆对象举例说明:案例一:我想吃大盘鸡面向过程 ...
    hollow_02f9阅读 1,734评论 0 0
  • 基础1.r''表示''内部的字符串默认不转义2.'''...'''表示多行内容3. 布尔值:True、False(...
    neo已经被使用阅读 1,918评论 0 5
  • 要点: 函数式编程:注意不是“函数编程”,多了一个“式” 模块:如何使用模块 面向对象编程:面向对象的概念、属性、...
    victorsungo阅读 1,733评论 0 6

友情链接更多精彩内容