python基础之类(class)的定义和使用

本文介绍了Python中的类和对象,包括类的定义、属性(类属性和实例属性)、方法(普通方法、类方法和静态方法),以及初始化方法__init__的作用。通过实例如Car类展示了如何创建对象并操作其属性和方法。
摘要由CSDN通过智能技术生成

学习目录

1 什么是类

2 类的定义

  2.1 类属性

  2.2类方法

  2.3 静态方法

  2.4 普通方法

  2.5初始化方法__init__()

3 总结

什么是类

我们经常讲‘物以类聚,人以群分’,这里的类指相同属性的一类东西,而python中的类(class)也可以这么理解为相同属性的一些函数聚在一起,而通过__init__()初始化方法可以传入不同参数得到不同的实例对象,进而每个不同实例对象的一些属性值会不同。

比如很多书籍经常讲到的例子Car类,他们属性可以有颜色,品牌,性价比等。

class Car():
    def __init__(self,brand,color,cost_performance):
        self.brand = brand
        self.color = color
    self.cost_performance = cost_performance
        def print_property(self):
        print(f'汽车品牌:{self.brand} 颜色:{self.color } 性价比:{self.cost_performance}')
#实例化对象
Mercedes_Benz = Car('GLC260','black','不高')
Mercedes_Benz.print_property()
#实例化对象
BYD = Car('汉','red','高')
BYD.print_property()

结果打印:

汽车品牌:GLC260 颜色:black 性价比:不高

汽车品牌:汉 颜色:red 性价比:高

大家可以看到通过传入不同的参数,实例化了不同的类对象,相同的方法打印的结果却不同。

类的定义

通过下面一张图概括下类的一些基本概念:类的定义, 类属性,类方法,初始化方法,静态方法

类属性

定义变量在class xxxx的下方,不属于任何其他方法,这种为类属性,

  • 可直接使用class.xxx调用
  • 可通过实例化对象类调用
  • 通过类直接调用并修改类属性的值,不管使用类调用还是实例化对象调用都会被修改。
  • 通过实例化对象调用并修改类属性的值,影响实例化对象本身,但不影响类调用和其他实例化对象。

#直接使用类调用

print(f'汽车乘坐人数:{Car.persons}')
#结果:
汽车乘坐人数:5

使用实例化对象调用

Mercedes_Benz = Car('GLC260','black','不高') #实例化对象
print(f'汽车乘坐人数 :{Mercedes_Benz.persons}')
#结果:
汽车乘坐人数:5

通过类调用并修改属性值

Car.persons = 7
print(f'汽车乘坐人数:{Car.persons}')
Mercedes_Benz = Car('GLC260','black','不高') #实例化对象
print(f'汽车乘坐人数 :{Mercedes_Benz.persons}')

#结果: 类调用和实例化对象调用的属性值都已修改
汽车乘坐人数:7
汽车乘坐人数:7

通过实例化对象调用并修改属性值

Mercedes_Benz = Car('GLC260','black','不高') #实例化对象
Mercedes_Benz.persons = 7
print(f'汽车乘坐人数:{Car.persons}')
print(f'汽车乘坐人数 :{Mercedes_Benz.persons}')

#结果: 类调用的属性值并没有被修改
汽车乘坐人数:5
汽车乘坐人数:7

类方法

可直接使用类调用和实例化对象调用,方法内部也不能使用self.调用属性和方法。但可以调用类属性和其他类方法和静态方法。

Car.print_persons()
#实例化对象
Mercedes_Benz = Car('GLC260','black','不高')
Mercedes_Benz.print_persons()

静态方法

可直接使用类调用和实例化对象调用,方法中参数不带self,方法内部也不能使用self.调用属性和方法。

Car.print_power_source('汽油')
#实例化对象
Mercedes_Benz = Car('GLC260','black','不高')
Mercedes_Benz.print_power_source('汽油')

普通方法

没有使用@staticmethod和@classmethod装饰的函数,只能使用实例化对象调用

比如上面例子中的print_property方法。

def print_property(self):
   print(f'汽车品牌:{self.brand} 颜色:{self.color } 性价比:{self.cost_performance}')

如果使用类调用该方法,会报错

Car.print_property()
#报错
Traceback (most recent call last):
File "/Users/usera/Desktop/test.py", line 35, in <module>
Car.print_property()
TypeError: Car.print_property() missing 1 required positional argument: 'self'

初始化方法__init__()

初始化方法定义的属性,只能使用实例化对象调用。

如果使用类调用,同样会报错

Car.brand
#报错
Traceback (most recent call last):
File "/Users/usera/Desktop/test.py", line 35, in <module>
Car.brand
AttributeError: type object 'Car' has no attribute 'brand'

总结

通过以上示例,可以看出类的实例化对象可访问普通方法、类方法和静态方法,类属性和实例化属性, 而使用类只能访问类方法和静态方法,类属性。

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值