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()

 

posted @ 2021-08-05 19:56  蕊在花中  阅读(38)  评论(0)    收藏  举报