天天看点

python 类定义_Python面向对象之封装类

# 封装:将属性和方法封装到类中,通过构造类的对象来实现功能

# 在面向对象的程序设计过程中有两个重要概念:类(class)和对象(object,也被称为实例,instance),其中类是某一批对象的抽象,可以把类理解成某种概念;对象才是一个具体存在的实体。

# 定义类的关键字: class

'''

语法

class ClassName:

      语句块

类中包含属性和方法

    属性直接编写

    方法就是函数,且这个函数第一个参数默认是self

类的命名

    驼峰式命名

    首字母大写,以后的每个单词的首字母均大写

    不要使用中文,空格,特殊字符,关键字,保留字

属性和方法命名

小写字母,以后的每个单词前使用下划线连接 a_b

Python 的类大致有如下作用

定义变量;

创建对象;

派生子类;

'''

# 为什么会有类:比如我们要形容一个学生,这个学生学习很多门课程,如果每门课程都用一个变量去形容(或使用字典,列表去描述),那么会显得太零散,而当我们要形容的学生太多,就需要有很多变量去描述,为了解决这个问题,便有了类。我们可以给每个学生定义一个类,将这个学生相关的全部放入到这个类中

# 定义一个不包含任何类变量和方法,这个类相当于一个空类,使用 pass 语句作为占位符,空类没有太大的实际意义

class Empty:

      pass

# 定义一个类

class Student:

    # 类属性

    name = None

    # 方法,函数

    def act(self):

        print("跳舞")

# 对象创建

a = Student()

print(a)

print(type(a))

print(a.name)

# 操作属性,设置属性

a.name = "Tony"

# 获取属性

print(a.name)

# 调用对象的方法

# 类后面的括号代表创建对象,函数后面的括号代表调用、执行

a.act()

python 类定义_Python面向对象之封装类

# 构造函数 __init__

# Python 中很多以双下划线开头、双下划线结尾的方法,都具有特殊的意义

# 构造方法是一个类创建对象的根本途径,因此 Python 还提供了一个功能:如果开发者没有为该类定义任何构造方法,那么 Python 会自动为该类定义一个只包含一个 self 参数的默认的构造方法

#与函数类似的是,Python 也允许为类定义说明文档,该文档同样被放在类声明之后、类体之前

# 对象属性和类属性

class Students:

    '这是Python定义的一个Students类,类说明'

# 类变量,被类和对象共有

    name = None

    def __init__(self,a_name):

        # 成员变量,对象变量,对象独有的

        self.a_name = a_name

   # 下面定义了一个act方法

    def act(self):

        print("跳舞")

a = Students (a_name="Linda")

a.name = "Tom"

print(a.name)

print(a.a_name)

b = Students (a_name="Diana")

print(b.a_name)

print(b.name)

Students.name = "Karl"

print(a.name)

print(b.name)

c = Students(a_name="Lisa")

print(c.name)

Students.a_name = "Jack"

print(Students.a_name)

print(a.a_name)

print(b.a_name)

print(c.a_name)

python 类定义_Python面向对象之封装类

'''

总结

属性是类的,也是这个类所有实例的,其实例都可以访问到;

是实例的,就是这个实例自己的,通过类访问不到

类变量是属于类的变量,这个类的所有实例可以共享这个变量

对象(实例或类)可以动态的给自己增加一个属性(赋值即定义一个新属性)

实例.dict[变量名]和实例.变量名都可以访问到自己的属性(但两种访问有本质上的区别的)

实例的同名变量会隐藏掉类变量,或者说是覆盖这个类变量,但是类变量依旧存在,并不是真正的覆盖

'''

# 对象的销毁

# 类中可以定义__del__方法,称为析构函数。

# 作用:销毁类的实例的时候调用,以释放占用的资源,其实就放些清理资源的代码。

# 注意这个方法不能引起对象的真正销毁,只是对象销毁的时候会自动调用它。

# 使用del语句删除实例,引用计数减1.当引用计数为0时,会自动调用__del__方法,由于# Python是实现了垃圾回收机制,不能确定对象何时执行垃圾回收。

class People:

    def __init__(self,name,age=18):

        self.name=name

        self.__age=age

    def __del__(self):

        print(self.name)

def item():

    tom=People('tom')

    tom.__del__()

    tom2=tom

    print(1,'del')

    del tom

    print(2,'del')

    del tom2

print('删除')

item()

python 类定义_Python面向对象之封装类

# item()由于垃圾回收对象销毁时,才是真正的清理对象,还会在回收对象之前自动调用__del__方法,除非你明确知道自己的目的。

如果你希望一切都能变得更加美好,就从改变自己开始。

python 类定义_Python面向对象之封装类

关注微信公众号“ 蜘蛛编程“ ~发送001,领取***PyCharm工具安装包+注册码、笨办法学Python**文档 添加微信号"  BwcxTz1  "领取***Python爬虫开发与项目实战、Python程序错误故障排除17个问题**等更多优质文档

||如有侵权,请联系删除,谢谢!||

下一篇: WDA-1