类即类别/种类,是面向对象分析和设计的基石,如果多个对象有相似的数据与功能,那么该多个对象就属于同一种类。有了类的好处是:我们可以把同一类对象相同的数据与功能存放到类里,而无需每个对象都重复存一份,这样每个对象里只需存自己独有的数据即可,极大地节省了空间。所以,如果说对象是用来存放数据与功能的容器,那么类则是用来存放多个对象相同的数据与功能的容器。
需要强调的是:在程序中,必须要事先定义类,然后再调用类产生对象(调用类拿到的返回值就是对象)。产生对象的类与对象之间存在关联,这种关联指的是:对象可以访问到类中共有的数据与功能,所以类中的内容仍然是属于对象的,类只不过是一种节省空间、减少代码冗余的机制,面向对象编程最终的核心仍然是去使用对象。
-
定义
类名: 首字母大写 遵循标识符的命名规则
属性:也就是变量 遵循标识符的命名规则
方法:也就是功能、也就是函数 遵循标识符的命名规则
-
创建存在属性与方法的类
class Person: # 属性 name = 'jack' age = 18 sex = 'male' # 方法 def dbj(self): print('造福人类') def hobby(self): print('抽烟、喝酒、烫头')
-
-
格式
对象名 = 类名([参数])
-
说明
参数列表 :为了以后给属性赋值(参数传递)
-
实例化代码
# 实例化出jack对象 jack = Person() # 调用属性 print(jack.name) print(jack.age) # 调用方法 print(jack.hobby())
对象.属性名
对象.方法名([参数...])
方法的返回值 return
方法里如果没有返回值,打印方法的时候返回 None
如果有返回值,需要使用 print() 将其输出,因为return会将返回值返回给调用处
class 类名:
def 方法名():
return "值"
注意:
return 下方的代码不在执行 遇到return 就认为是结束了!
-
概述
- 在类的内部,使用def关键字来定义方法(函数)。与一般函数不同,方法必须存在第一个参数,也就是self,且为第一个参数。self代表的是当前类的实例,而非类。
- self参数名 可以随便写,但是建议使用self
-
实例
class Test: name = 'lucky' age = 18 def say(self): print('测试self参数') # self 就是外部当前调用的对象(谁调用 self就是谁) # 调用内部的所有属性和方法 # self叫什么都行 但是统一叫self def speak(self): # 验证参数self 和 外部对象t1的关系 print(self) print('self_id', id(self)) # 调用属性 print(self.name) print(self.age) # 使用self对象 创建对象属性 self.sex = 'man' self.say() # 调用方法 print(self.__dict__) print('speak方法') # 对象 t1 = Test() t1.speak() print('t1', t1) print('t1_id', id(t1)) # 调用self创建的对象属性 sex print(t1.sex) # 查看t1对象内部的所有属性和方法 print(t1.__dict__)
注意
- self就是当前类实例化的对象,哪个对象调用它,他就是哪个对象
- self不是必须的名称,但是作为标准,必须叫self
- self在类的内部使用,用于调用和创建对象属性
class Test: name = 'lucky' age = 18 # def test_args(self, sex, hobby): # def test_args(self, sex, hobby, *args): # def test_args(self, sex, hobby, **kwargs): def test_args(self, sex, hobby, *args, **kwargs): # 在调用test_args的时候 创建了对象属性 sex、hobby self.sex = sex self.hobby = hobby print(args) print(kwargs) return sex, hobby t1 = Test() # 调用 t1.test_args('man', '写代码') t1.test_args(sex='man', hobby='写代码') t1.test_args('man', '写代码', '非常喜欢写代码', '一天不写代码浑身难受') print(t1.test_args('man', '写代码', sign1='非常喜欢写代码', sign2='一天不写代码浑身难受')) print(t1.__dict__)
对象中的方法和函数使用一样(参数、返回值) 但是就多了一个self参数