Day11 类和对象的创建

一、类的创建

1、要获取一个对象所对应的类,需要使用class来进行检索

 下面创建一个类

#格式: class 典名(object)
'''创建类时要用你class方法进行定义和检索'''
class Definite:     #这里的class Definite就叫做一个类对象
    pass      '''Definite为类的名称(类名),一个类可以由一个或多个单词来定义,
                每个单词的首字母大写,其余部分小写'''

在Python中一切皆对象,那在这里可以用id()、type()方法查看是否开辟了内存空间和查看数据类型

print(id(Definite))
print(type(Definite))   #数据类型时class类型
print(Definite) 

29456744
<class 'type'>
<class '__main__.Definite'>    #对应的就是Definite的值

 2、在类中有类属性、实例方法、静态方法和类方法组成

class practice:  #类对象
    '''(1)直接在类中定义的变量叫做类变量'''
    native_place='山东'   #类变量  直接在类中定义的变量叫做类变量,也叫类属性

    #实例方法
    def work(self):
        print('我现在正在学Python')   #在类外面定义的叫做函数,在类之内定义的叫做方法
        '''在定义完方法名后括号内自动生成变量self,也可改成其他单词,一般程序员默认用的是self'''

    #静态方法
    @staticmethod   #必须要引用staticmethod方法
    def smmethod():     #这里括号里面不能有东西,不能写self,这是规定
        print('静态方法这里使用了staticmethod方法进行修饰,所以我是静态方法')

    #类方法 使用classmethod方法进行修饰
    @classmethod
    def cmmethod1(cls):   #括号里面必须要跟上cls(class缩写),也可以用其他单词代替_
        print('这里用的classmethod方法进行修饰,所以是类方法')

    #初始化方法 def _init_(self)
    def __init__(self,name,age):    #括号里面必须有self,在后面可以继续跟变量名 name和age相当于函数体内的局部变量
        self.name=name    #self.name成为实例属性,进行了赋值操作,将局部变量name的值赋给了实例属性  self.后面单词可以是别的,习惯上写name
        self.age=age      #这两步为赋值操作

此时practice这个类就创建完毕了,它现在就相当于是一个模板,以供待会要创建的对象使用 

类的组成作用
初始化方法使用初始化方法创建实例对象
类属性直接写在类里的属性称为类属性
实例方法实例方法是类的实例对象能够调用的方法
静态方法没有默认参数,不能使用类或者实例的任何属性和方法,用装饰器 @staticmethod 修饰
类方法有默认参数,可以使用类的属性和方法,但不能使用实例的属性和方法,用装饰器 @classmethod 修饰

二、对象的创建

1、一开始定义的类叫做类对象,根据类对象创建出来的叫做实例对象

'''创建practice类的实例对象'''
prac1=practice('张三',21)    #创建的是实例对象
print(id(prac1))
print(type(prac1))
print(prac1)    #结果中的20048528和内存地址0x0131EA90是相等的
print('-----------------------')
print(id(practice))
print(type(practice))
print(practice)
'''上面的是practice类的一个对象的内存地址,下面是这个practice类的内存地址'''
25547280
<class '__main__.practice'>
<__main__.practice object at 0x0185D210>
-----------------------
26180416
<class 'type'>
<class '__main__.practice'>
prac1.work()     #这里直接写实例对象名.类中的函数名你,写类名称.函数名会报错
                 #对象名.方法名
print(prac1.name)
print(prac1.age)
print('-----------------------')
practice.work(prac1)    #这里的代码和prac1.work()作用相同
                        #类名.方法名(类的对象)----->实际上就是该方法定义处的self

我现在正在学Python
张三
21
-----------------------
我现在正在学Python

2、类属性、类方法、静态方法的创建

(1)、使用类属性:

print(practice.native_place)
prac1=practice('张三',20)
prac2=practice('李四',30)
print(prac1.native_place)
print(prac2.native_place)
print('===============================')
#更改类属性的值  类名。类变量名=新值
practice.native_place='青岛'
print(prac1.native_place)
print(prac2.native_place)

山东
山东
山东
===============================
青岛
青岛

当类中的类变量值发生改变后,实例对象所引用的也跟着发生变化

(2)调用类方法:类名.类方法名

practice.cmmethod1()
这里用的classmethod方法进行修饰,所以是类方法

(3)调用静态方法:类名.静态方法名

practice.smmethod()   #跟类方法不同,没有默认参数
静态方法这里使用了staticmethod方法进行修饰,所以我是静态方法

在实例方法中,prac1.work()和practice.work(prac1)两种方法效果是一样的。一个是用实例对象名.方法名,一个是类名.方法名,括号里面穿的是对象名

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值