python---类及相关
12、类的定义
-
经典类
-
class 类名:
-
-
新式类
-
class 类名(父类名):
-
# 定义一个类:
'''
格式:
# 经典类
class 类名:
# 新式类
class 类名(父类名):
'''
# 经典类
# 不由任何类派生,或者说不继承任何类
class student:
pass # 为了保证代码结构完整,在类下边必须书写表达式,如果没有使用pass占位
# 新式类
# 括号内就是我们的父类,也就是存在一定的继承关系
# 有些地方称其为object的派生类
class teacher(object):
# pass
... # 为了保障代码结构完整,也可以使用...来进行占位
13.类的实例化
-
类的实例化又叫做创建对象
-
类中实例化后的对象可以调用类中的方法
-
一个类理论上可以实例化无数个对象
-
格式: 类名()
# 类的实例化又称为创建对象
# 定义一个类
class Student(object):
# 定义方法.定义方式和函数定义类似
def study(self):
print('我在听直播课,贼有意思,就是学习非常不努力我也能听懂')
def eat(self):
print('我在吃脑白金,补补脑子继续学习')
# 类的实例化(创建对象)
# 格式: 类名()
s1 = Student()
# 我们可以直接打印对象,得到的是其所对应的类和所在的内存地址
print(s1) # <__main__.Student object at 0x7f9be20848e0>
# 也可以打印对象的类型,其实就是我们创建对象所使用的类
print(type(s1)) # <class '__main__.Student'>
# 实例可以调用实例方法
s1.study()
s1.eat()
# 理论上类可以创建无数个实例对象
s2 = Student()
print(s2)
# 类名的定义要使用大驼峰命名法
# 类名严格区分大小写,类名遵循标识符的命名规则
# class ChineseStudent():
# pass
#
# s3 = Student()
# s4 = student()
# s3.eat()
# s4.eat()
14、self
-
self就是讲调用方法的实例传入方法内部,在方法内部可以调用实例的属性和方法
# 在类的内部定义方法的时候,自动传入一个self
# 在调用实例方法时,不需要对self 进行传值
# self到底是什么?有什么用?
class Student(object):
def study(self):
# 由于s1和self指向同一块内存空间,所以其必为同一个对象
# 也就是说在对象调用方法时会将对象本身传入方法内部进行使用
print(self) # <__main__.Student object at 0x7fa2654848e0>
print('我要学习了,谁也不要打扰我,我知道你们为了超过我不择手段,但是没有用')
def eat(self):
# self 有什么作用呢?
# 可以在方法内部调用实例所拥有的属性或者方法
print('我要吃饭了吃完就学习')
self.study()
# 实例化对象
s1 = Student()
print(s1) # <__main__.Student object at 0x7fa2654848e0>
s1.study()
s1.eat()
# 我们为什么要讲对象传入进去呢?
# 方法时定义在类的内部的,所有的对象共有一个类,所以我们再调用方法的时候,需要传入我们调用方法所使用的类
# s2 调用study方法时所指向的空间和s1无关所以两个对象指向不同的内存空间,修改一个,另一个不发生变化
s2 = Student()
s2.study()

浙公网安备 33010602011771号