类定义、属性、初始化和析构知识点总结

定义,属性,初始化,知识点,总结 · 浏览次数 : 30

小编点评

**一:前言:为什么要学类?** 1. **简化代码,提升效率,避免代码重复写入。** 如用户注册、校验、登录方法可以放在一个类中,需要哪个方法就调用哪个类===》建立模型框架(建立一个方法)===》很多鼠标(实例化)===》都是独立的 2. **面向对象:** 直接给我们结果例1. 列表的方法li=[1,2,3] # 对象、实例print(dir(li)) 运行截图: 例2.  类名()===>实例li=list() li.append(123)print(li)运行截图:  二 .类相关案例 **二:类相关案例** '''方法===》点击、移动、右击 方法就是行为属性===》重量、颜色、牌子、大小'''例1. 鼠标类 这样的写法很简洁易懂,方法就是行为属性 **三:总结** * 类是一个独立存放变量(属性/方法)的空间 * 类是面向对象的,直接给我们结果例1. 列表的方法li=[1,2,3] * 类可以简化代码,提升效率,避免代码重复写入

正文

一:前言:为什么要学类?

     类 是一个独立存放变量(属性/方法)的空间

 

    1.简化代码,提升效率,避免代码重复写入。如用户注册、校验、登录方法可以放在一个类中,需要哪个方法就调用哪个


类===》建立模型框架(建立一个方法)===》很多鼠标(实例化)===》都是独立的
  
2.面向对象:直接给我们结果

例1. 列表的方法
li=[1,2,3]  # 对象、实例
print(dir(li))   

运行截图:

 例2.  类名()===>实例

li=list()   
li.append(123)
print(li)

运行截图: 

 二 .类相关案例

 '''

方法===》点击、移动、右击  方法就是行为
属性===》重量、颜色、牌子、大小

'''
例1. 鼠标类 这样的写法不是很
class Shubiao:  
    color='褐色'  # 类里面的变量为属性,属性固定
    brand='AA'
    def click(self): # self代表的是实例本身
        print('我点击了')
    def move(self,direction):
        print('移动到%s'%direction)

# 类名()  ===》实例化一个鼠标出来,mouse1与mouse2 为独立的个体
mouse1=Shubiao()  # 实例
Shubiao.color='蓝色'  # 修改类属性:一定要通过类,而不是通过实例,类名赋值

mouse1.color='红色' # 实例属性并不是修改:通过实例
print(mouse1.color) # 调用类属性==》实例名.属性名或者类.属性
# # Shubiao.move(mouse1,'下面')
#
print(Shubiao.color)
mouse1.click()
mouse1.move('左边')
print(dir(mouse1))
# 如果再次生产出一个鼠标
mouse2=Shubiao()  # 两个鼠标的模型是一样的
mouse2.move('右边')  # 有参数需要传参数
print(mouse2.color)

 运行截图:

 例2. 人类

   方法:跑步、吃东西

属性:姓名、年龄、身高

 类与实力之间的关系:

方法:

 

 

 

a. 实例也是一个独立存放变量的空间,每个实例都是一个独立的变量空间。 不同实例之间的空间互相不可见。

b. 一个“实例”的“特征”,就是“属性”  , 姓名、年龄、身高

c. 和函数的传参一样,只是会先传一个自身的实例self

d. 通常,将默认会传入的那个参数命名为self,用来表示调用这个方法的实例对象本身

第一种写法:
class Person:
    # name='小明'
    def run(self,name):  # self实例本身
        # 实例属性===》通过实例名.属性
        # print('%s在跑步'%Person.name)
        print('%s在跑步'%name)

    def eat(self,name):
        print('%s吃东西'%name)
#
xiaoming=Person()  # 小明的这个实例
xiaoming.run('xiaoming')
xiaoming.eat('xiaomimg')
# #
xiaohua=Person()
xiaohua.run('xiaohua')

运行截图:

 第二种写法:

缺点: 先调用跑步的方法才可以调用吃的方法

class Person:
    # name='小明'
    def run(self,name):  # self实例本身
        # 实例属性===》通过实例名.属性    ====解决了属性的固定
        # 实例属性  name 上面的参数
        self.name=name
        # print('%s在跑步'%Person.name)
        # print('%s在跑步'%name)
        print('%s在跑步'%self.name)

    def eat(self):
        print('%s吃东西'%self.name)
#
xiaoming=Person()  # 小明的这个实例
xiaoming.run('xiaoming')
xiaoming.eat()

# 小花的这个实例 xiaohua=Person() xiaohua.run('xiaohua') # 不用每个方法都传参数,self.name=name 第一次传参已经保存了对应信息,所以eat()无需再次传参 xiaohua.eat()

运行截图:

 第三种写法:优化以上写法(增加初始化)

class Person:
    def __init__(self,name,age):  # 魔术方法 ==自己调用自己(当创建实例的时候==xiaoming=Person())
        print('这里是初始化方法')
        self.name=name  # 初始化的时候定义好(经常用的,不经常用的在方法里面直接传参)
        self.age=age

    def run(self):  # self实例本身

        print('%s在跑步'%self.name)

    def eat(self):
        print('%s吃东西'%self.name)

    def f(self,t):
        print('我今天%s多重'%t)

xiaoming=Person('小明',19)  # 小明的这个实例
xiaoming.run()
xiaoming.eat()
xiaoming.f('90') # 不经常用的在这里直接传参即可

运行截图:

第四种写法 :增加 析构方法

 

class Person:
    # 初始化方法在创建实例的时候调用
    def __init__(self,name,age):  # 魔术方法 ==自己调用自己(当创建实例的时候==xiaoming=Person())
        print('这里是初始化方法')
        self.name=name  # 初始化的时候定义好(经常用的,不经常用的在方法里面直接传参)
        self.age=age
    # 析构方法在实例调用结束的时候调用,结束有两种方式:自动结束(程序结束的时候触发)和手动结束(哪里结束哪里触发)
    def __del__(self):  # 在实例没有用的时候调用
        print('被销毁了')

    def run(self):  # self实例本身

        print('%s在跑步'%self.name)

    def eat(self):
        print('%s吃东西'%self.name)

    def f(self,t):
        print('我今天%s多重'%t)

xiaoming=Person('小明',19)  # 小明的这个实例
xiaoming.f(90)  # 程序走到这里的时候并不知道还有没有小明这个实例或者不知道后面还有没有其他实例用
# del xiaoming  # 可以手动提前结束程序,如果不写最后(程序走完的时候)才调用
print(xiaoming.age)
# #
xiaohua=Person('小明',18)  # 程序走完了(没人用实例的时候,实例结束...)调用销毁方法

运行截图1:

 运行截图2:

 

 

与类定义、属性、初始化和析构知识点总结相似的内容:

类定义、属性、初始化和析构知识点总结

一:前言:为什么要学类? 类 是一个独立存放变量(属性/方法)的空间 1.简化代码,提升效率,避免代码重复写入。如用户注册、校验、登录方法可以放在一个类中,需要哪个方法就调用哪个 类 》建立模型框架(建立一个方法) 》很多鼠标(实例化) 》都是独立的 2.面向对象:直接给我们结果例1. 列表的方法

入门篇-其之四-字符串String的简单使用

什么是字符串? 在Java编程语言中,字符串用于表示文本数据。 字符串(String)属于引用数据类型,根据String的源码,其头部使用class进行修饰,属于类,即引用数据类型。 字符串的表示 字符串使用双引号""表示,在双引号中你可以写任意字符。 和前面定义并初始化基本数据类型的变量一样,定义

Python 实现 定义个矩形类,有长和宽两个实例属性,还有一个计算面积的方法

思路:'''1.定义矩形类2.定义属性 属性分:类属性和实例属性实例属性==》self.属性 》self是一个参数在一个方法中==》_init_方法 3.定义方法 def Area(self): s=self.length*self.width ''' class Square: def __ini

常用设计模式总结,附完整图解

UML类图 类图定义规则 属性和方法前加上(+、-、#、留空)分别代表:公开(public)、私有(private)、保护(protected)、缺省(default) 方法括号内为参数类型,冒号后为返回值类型 下划线表示 静态(static),斜体表示 抽象(abstract) 类图关系表示法 其

7.0 Python 面向对象编程

python是一种面向对象的编程语言,面向对象编程(Object-Oriented Programming,OOP)是一种编程思想,其核心概念是“对象”。对象是指一个具有特定属性和行为的实体,而面向对象编程就是通过对这些实体进行抽象、分类、封装和继承等操作,来实现程序的结构和逻辑。在python中,我们可以通过定义类、创建实例和调用方法等方式,来实现面向对象编程的思想,从而编写出更加灵活、可扩展、

结构型-装饰器模式

定义 如果希望动态给某个类添加一些属性或者方法,但是你又不希望这个类派生的对象受到影响,那么装饰器模式就可以给你带来这样的体验。 它的定义就是在不改变原对象的基础上,通过对其进行包装拓展,使得原有对象可以动态具有更多功能,从而满足用户的更复杂需求。 举个例子,一部手机,你可以买各种花里胡哨的手机壳等

XML Schema 复杂元素类型详解:定义及示例解析

在XML Schema(XSD)中,复杂元素包含其他元素和/或属性,分为4类:空元素、仅含元素、仅含文本和既含元素也含文本。定义复杂元素可通过直接声明或引用预定义的复杂类型。复杂空元素仅含属性,而仅含元素的类型则只包含其他子元素。XSD提供了``、``、`<...

第一百一十六篇: JavaScript理解对象

好家伙,本篇为《JS高级程序设计》第八章“对象、类与面向对象编程”学习笔记 1.关于对象 ECMA-262将对象定义为一组属性的无序集合。严格来说,这意味着对象就是一组没有特定顺序的值。 对象的每个属性或方法都由一个名称来标识,这个名称映射到一个值。正因为如此(以及其他还未讨论的原因),可以把 EC

第一百一十八篇: JavaScript 原型链式继承

好家伙,好家伙,本篇为《JS高级程序设计》第八章“对象、类与面向对象编程”学习笔记 1.原型链 原型链是JS实现"继承"的方案之一 ECMA-262把原型链定义为ECMAScript的主要继承方式。其基本思想就是通过原型继承多个引用类型的属性和方法。 重温一下构造函数、原型和实例的关系:每个构造函数

new方法、定制属性访问、描述符与装饰器知识点总结

第一部分:__new__方法 思考: a. 我们创建实例是通过什么方法创建的呢? b. 类每次实例化的时候都会创建一个新的对象,如果要求类只能被实例化一次该怎么做呢? 通过单利模式实现 c.什么是单例模式(Singleton Pattern ) 1、确保一个类只有一个实例,而且自行实例化并向整个系统