Python基础(类与对象)

Python基础(类与对象)

一、编程的两大思想

面向过程和面向对象

面向过程 面向对象
区别 事物比较简单,可以用线性的思维去解决 事物比较复杂,使用简单的线性思维无法解决

共同点:面向对象和面向过程都是解决实际问题的一种思维方式

二者相辅相成,并不是对立的,解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系,方便我们分析整个系统;具体到微观操作,仍然使用面向过程方式来处理

二、类

类别,分门别类,物以类聚,人类,鸟类,动物类,植物类…

  • 类时多个类似事物组成的群体的统称。能够帮助我们快速理解和判断事物的性质

三、定义Python中的类

创建类的语法

class Student: #Student为类的名称(类名),由一个或多个单词组成,每个丹迪的首字母大写,其余小写

​ pass

class Student: #Student为类的名称(类名),由一个或多个单词组成,每个丹迪的首字母大写,其余小写
    pass
class Student: #Student为类的名称(类名),由一个或多个单词组成,每个丹迪的首字母大写,其余小写
    pass

print(id(Student))
print(type(Student))
print(Student)

输出:

1512775104816
<class 'type'>  # 表明是class类型
<class '__main__.Student'>

类的组成

  • 类属性
  • 实例方法
  • 静态方法
  • 类方法
class Student:
    native_pace='吉林' #直接写在类里的变量,称为类属性

    def __init__(self,name,age):
        self.name=name #self.name,称为实体属性,进行了一个赋值的操作,将局部变量的name的值赋给实体属性
        self.age=age

    #实例方法
    def eat(self):
        print('学生在吃饭...')

    #静态方法
    @staticmethod
    def method():
        print('我使用了staticmethod进行修饰,所以我是静态方法')
	
    #类方法
    @classmethod
    def cm(cls):
        print('我是类方法,因为我使用了classmethod进行修饰')

#在类之外定义的称为函数,在类之内定义的称为方法
def drink():
    print('喝水')

四、对象的创建

  • 对象的创建又称为类的实例化
  • 语法:
    • 实例名=类名
  • 例子:
    • stu=Student()
  • 意义:有了实例,就可以调用类中的内容
#创建Student类的对象
stu1=Student('张三',20)
print(id(stu1))
print(type(stu1))
print(stu1)

输出:

1668138946320  #转换成十六进制就是  18464D44F10
<class '__main__.Student'>
<__main__.Student object at 0x0000018464D44F10>

查看类对象

print(id(Student))
print(type(Student))
print(Student)

输出:

2460596968352
<class 'type'>
<class '__main__.Student'>

对比上面实例对象和类对象的不同

五、使用对象

调用类的方法和属性

#创建Student类的对象
stu1=Student('张三',20)
stu1.eat()  #对象名.方法名()
print(stu1.name)  #调用实例对象的属性
print(stu1.age)

print('--------')
Student.eat(stu1) #这一行与上面调用eat()方法的功能相同,都是调用Student的eat()方法
                            #类名.方法名(类的对象)-->实际上就是方法定义处的self

输出:

学生在吃饭...
张三
20
--------
学生在吃饭...

对比两种调用方法的方式的不同,其实功能是相同的

六、类属性_类方法__类静态方法

类属性:类中方法外的变量称为类属性,被该类的所有对象所共享

类方法:使用@classmethod修饰的方法,使用类名直接访问的方法

静态方法:使用@staticmethod修饰的方法,使用类名直接访问的方法

print(Student.native_place) #访问类属性

Student.cm() # 调用类方法

Student.sm() # 调用静态方法

类属性的使用方式

#类似属性的使用方式
print(Student.native_pace)
stu1=Student('李四',20)
stu2=Student('王五',22)
print(stu1.native_pace)
print(stu2.native_pace)
#修改类属性
print('-------------------')
Student.native_pace='天津'
print(stu1.native_pace)
print(stu2.native_pace)
吉林
吉林
吉林
-------------------
天津
天津

表明类属性是共享的

类方法的使用方式

print('-----类方法的使用------')
Student.cm()

输出:

-----类方法的使用------
我是类方法,因为我使用了classmethod进行修饰

类方法

@classmethod
def cm(cls):
    print('我是类方法,因为我使用了classmethod进行修饰')

类静态方法的使用

print('-----静态方法的使用------')
Student.method()

输出:

-----静态方法的使用------
我使用了staticmethod进行修饰,所以我是静态方法

静态方法

#静态方法
@staticmethod
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值