python面向对象——类和对象

本文介绍了面向对象编程中的基本概念,包括类(抽象、类名规范、构造函数、实例化)、对象(实例成员和实例变量)、类成员(类变量、类方法、静态方法)以及实例化的练习。通过Genshin类的例子展示了如何创建对象并使用类方法进行计数。
摘要由CSDN通过智能技术生成

基础概念

  1. 抽象:从具体事物中抽离出共性、本质,舍弃个别、非本质过程。
  2. 类:一个抽象的概念,即生活中的”类别”。
  3. 对象:类的具体实例,即归属于某个类别的”个体”。
  4. 类是创建对象的”模板”。

                -- 数据成员:名词类型的状态。

                -- 方法成员:动词类型的行为。

学习提示----->关注内存变化

第一次学习的练习

语法

定义类
代码

class 类名:

            “””文档说明”””

          def _init_(self,参数列表):

                  self.实例变量 = 参数

          方法成员

说明

        -- 类名所有单词首字母大写.

        --  _init_ 也叫构造函数,创建对象时被调用,也可以省略。

        --  self 变量绑定的是被创建的对象,名称可以随意。

创建对象(实例化)

变量 = 构造函数 (参数列表)

实例成员

实例变量
语法
  1. 定义:对象.变量名
  2. 调用:对象.变量名

说明

首次通过对象赋值为创建,再次赋值为修改.

通常在构造函数(_init_)中创建。

每个对象存储一份,通过对象地址访问。

作用

        描述某个对象自己的数据。

__dict__

        对象的属性,用于存储自身实例变量的字典。

实例方法
语法

(1) 定义:

 def 方法名称(self, 参数列表):

                        方法体

(2) 调用: 对象地址.实例方法名(参数列表)

          不建议通过类名访问实例方法

说明

        (1) 至少有一个形参,第一个参数绑定调用这个方法的对象,一般命名为"self"。

        (2) 无论创建多少对象,方法只有一份,并且被所有对象共享。

作用

        表示对象行为。

类成员

类变量
语法

定义:在类中,方法外定义变量。

class 类名:

         变量名 = 表达式

调用:

        类名.变量名

      不建议通过对象访问类变量

说明

(1) 存储在类中。

(2) 只有一份,被所有对象共享。

作用

        描述所有对象的共有数据。

类方法
语法

定义:

    @classmethod

    def 方法名称(cls,参数列表):

         方法体

调用:类名.方法名(参数列表)

      不建议通过对象访问类方法

说明

(1) 至少有一个形参,第一个形参用于绑定类,一般命名为'cls'

(2) 使用@classmethod修饰的目的是调用类方法时可以隐式传递类。

(3) 类方法中不能访问实例成员,实例方法中可以访问类成员。

作用

操作类变量

静态方法

语法

定义:

    @staticmethod

    def 方法名称(参数列表):

            方法体

调用:类名.方法名(参数列表)

      不建议通过对象访问静态方法

说明

(1) 使用@ staticmethod修饰的目的是该方法不需要隐式传参数。

(2) 静态方法不能访问实例成员和类成员

作用

定义常用的工具函数。

练习

'''
    类成员

'''
'''
##第一部分初次学习使用
class ICBC:
    
        #工商银行
    
    #   类变量
    total_money = 10000000
    #   模拟表示总部的金融状况
    def __init__(self,name,money):
        self.name=name
        self.money=money

        #类变量
        #类名称.变量名
        ICBC.total_money -= money
        

i01=ICBC("维扬支行",100000)
i02=ICBC("广陵支行",100000)
print("总部的经济状况%d"%ICBC.total_money)
'''

##第二部分学习使用
class ICBC:
    
        #工商银行
    
    #   类变量
    total_money = 10000000
    @classmethod
    def print_total_money(cls):
        print("总部的经济状况%d"%ICBC.total_money)
        #print(cls,ICBC)
        #两种方法一样,下面的方法可能存在部分版本编译器不支持
    
    #   模拟表示总部的金融状况
    def __init__(self,name,money):
        self.name=name
        self.money=money

        #类变量
        #类名称.变量名
        ICBC.total_money -= money
        

i01=ICBC("维扬支行",100000)
i02=ICBC("广陵支行",100000)
ICBC.print_total_money()
#print("总部的经济状况%d"%ICBC.total_money)

整体练习


'''
    类&对象    整体练习
'''


'''
    练习:定义对象计数器
    定义  Genshin类,创建3个角色
    通过类变量记录角色个数
    通过类方法打印角色个数
'''

class Genshin:
    
    count_role=0
    @classmethod
    def print_count_role(cls):
        print("原神有%d个角色"%cls.count_role)
    def __init__(self,name):
        self.name=name
        Genshin.count_role+=1

role01=Genshin("甘雨")
role02=Genshin("刻晴")
role03=Genshin("凝光")
Genshin.print_count_role()

不建议代码

#以下方法都不建议
class Student:
    pass

s01=Student()
s01.name="张三"
s01.sex="男"

############


class Student1:
    def __init__(self,name,sex):
        self.name=name
        self.sex=sex
        self.fun01()#这个也是创建实例变量

    def fun01(self):
        self.aaa=10

s01=Student1()
s01.name="张三"
s01.sex="男"

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值