Python——类的简介,实例对象创建流程、属性和方法

类的简介
我们目前所学的一些对象例如(int 、str、 list、tuple、dict…)这些都是Python的内置对象
类,简单的理解就是相当于一个图纸。在程序中我们根据类来创建对象
类就是对象的图纸,我们称之为对象的实例(instance)
如果多个对象是通过一个类来创建的,我们称之为这些对象都是一类对象

如:int() float() bool() list() …这些都是类
a = 10
a = int(10 ) #创建了一个int类型的实类
这些都是Python内置的

创建自定义的类
Python定义一个类使用关键字class来声明,类的声明格式如下:

class className:
类体

其中,class是关键字,class Name(类名)为有效的标识符,命名规则一般为多个单词组成的名称,除每个单词的首字母大写外。注意类名后面有个冒号。在类体中,可以定义属性和方法,由缩进的语句块组成。

创建对象
类是抽象的,必须实例类才能使用类定义的功能,即创建类的对象。如果把类的定义视为数据结构的类型定义,那么实例化就是创建了一个这种类型的变量。

class Myclass:
    pass
print(Myclass)   #<class '__main__.Myclass'>

#使用Myclass创建一个对象
#使用类来创建对象,就像调用函数一样
mc = Myclass()#mc就是通过Myclass创建的对象,mc是Myclass的实例

#isinstance()用来检查一个对象是否是一个类的实例

result = isinstance(mc,Myclass)
print(result)
print(mc,type(mc))

运行结果:

<class '__main__.Myclass'>
True
<__main__.Myclass object at 0x0000020248E98278> <class '__main__.Myclass'>

类的type类型的对象

class Myclass:
    pass


#类是type类型的对象,定义类实际上就是定义了一个type类型的对象
print(Myclass,type(Myclass))   #<class '__main__.Myclass'> <class 'type'>


#创建了一个变量a,相当于就是在内存当中新开辟了新的对象,但这个对象指向的是Myclass这个类 
a= Myclass()


print(a,type(a))   #<__main__.Myclass object at 0x0000011284248208> <class '__main__.Myclass'>

使用类创建的一个流程
1、创建一个类
2、创建对象

class Myclass:

    name = '葫芦娃'

#类名.类变量名    读取类属性的值
print(Myclass.name)    #葫芦娃

#类名.类的变量名=值    修改类属性的值
Myclass.name = '钢铁侠'

print(Myclass.name)

#初始化类的属性
print(Myclass)    #<class '__main__.Myclass'>

#创建Myclass一个实例,在内存区域中开辟出新的内存地址给mc_2,mc_2指向的是Myclass这个类
mc_2=Myclass

mc_2.name = 'hlw'
print(mc_2.name)

运行结果:

葫芦娃
钢铁侠
<class '__main__.Myclass'>
hlw

类的定义
类的定义:类和对象都是现实生活中内容的抽象

#实际上所有的事物是由两部分组织
#1.数据属性(属性)
#2.行为(方法)

#在类的代码块中我们可以定义变量和函数
#在类中我们所定义的变量将会成为所有实例的公共属性
#所有实例都可以访问这些变量

#创建一个类
class  Person():
    #在类的代码块中我们可以定义变量和函数
    #在类中我们所定义的变量将会成为所有实例的公共属性
    #所有实例都可以访问这些变量
    name = '葫芦娃'
    age = 18






#创建类的实例
p1 = Person()
p2 = Person()

#通过类名.类变量名 来读取类属性的值
print(p1.name,p2.age)

运行结果:

葫芦娃  18

当类中有函数时,调用方法

class  Person():



    #在类中也可以定义函数,类中定义的函数我们称之为方法
    #这些方法也可以通过该类的实例来访问
    def say_hello(a):    #类调用时,必须要传递一个形参
        print('你好')
p1 = Person()
p2 = Person()

#调用语法:对象.方法名
#方法调用和函数调用的区别
#如果是函数调用,函数有几个形参,则调用函数的时候就要传递几个实参
#但是如果是方法调用,默认要传递一个参数,所以方法中要定义一个形参
#注意:方法调用时,第一个参数有解释器自动传递,所以定义方法时,至少要定义一个形参
p1.say_hello()    #类名.类的变量名      读取类属性的值

属性和方法
属性的查找流程:当我们调用一个对象时,解析器会先在当前对象中寻找是否含有该属性,
如果有,则直接返回当前对象的属性值。
如果没有则去当前对象类对象中寻找,如果有则返回类对象的属性值,如果没有则报错

类对象和实例对象都可以保存 属性(方法)
如果这个属性(方法)是所有实例共享的,则应该将其保存到类对象中
如果中国属性(方法)是某个实例独有的,则应该保存到实例中

在这里插入图片描述

class  Person():


    name ='葫芦娃'
    def say_hello(a):
        #方法每次调用的时候,第一个参数就是调用方法的本身,如果是p1调用则第一个参数介绍p1对象
        #如果是p2调用,则第一个参数就是p2对象
        #一般我们都会命名为self
        print(a)

p1 = Person()
p1.say_hello()
print(p1)



p2=Person()
p2.say_hello()
print(p2)

运行结果:

<__main__.Person object at 0x04E9AE50>
<__main__.Person object at 0x04E9AE50>
<__main__.Person object at 0x04E9FE70>
<__main__.Person object at 0x04E9FE70>

class  Person():


    name ='葫芦娃'
    def say_hello(self):
        #方法每次调用的时候,第一个参数就是调用方法的本身,如果是p1调用则第一个参数介绍p1对象
        #如果是p2调用,则第一个参数就是p2对象
        #一般我们都会命名为self
        print('你好我是:%s'%self.name)



p1 = Person()
p1.name='钢铁侠'
p1.say_hello()



p2=Person()
p2.name = '葫芦娃'
p2.say_hello()

运行结果:

你好我是:钢铁侠
你好我是:葫芦娃

#当p1中我们没有调用类变量名时,将去clss Person()这个类属性中,寻找。

class  Person():


    name ='葫芦娃'
    def say_hello(self):
        #方法每次调用的时候,第一个参数就是调用方法的本身,如果是p1调用则第一个参数介绍p1对象
        #如果是p2调用,则第一个参数就是p2对象
        #一般我们都会命名为self
        print('你好我是:%s'%self.name)



p1 = Person()    #当p1中我们没有调用类变量名时,将去clss  Person()这个类属性中,寻找。
p1.say_hello()



p2=Person()
p2.name = '葫芦娃'
p2.say_hello()

运行结果:

你好我是:葫芦娃
你好我是:葫芦娃
发布了54 篇原创文章 · 获赞 26 · 访问量 6198

猜你喜欢

转载自blog.csdn.net/qq_37662827/article/details/102700652