类与对象(一)

332 阅读3分钟

类与对象

1. 类的定义

1、、类:各个种类,如电子类、家具类、服饰类、食品类……; 2、实例:类的个例就叫做实例 (instance),可理解为“实际的例子”。

print(type('1')) # '1'属于字符串类'str'
print(type(1))  # 1属于整数类'int'
print(type([1])) # [1]属于列表类'list'

类:人类,电脑   示例:你、我;这台电脑,那台电脑
整数类,字符串类: 示例:1,2;'world','例子'

2. 类的创建和调用

class Computer:   #->  类的创建:class+类名+冒号,后面语句要缩进

    screen = True  #->  类的属性创建:通过赋值语句(即定义“是怎样的”)

    def start(self):  #->  实例方法的创建: def + 方法名(self):
        print('电脑正在开机中……')  #-> 方法具体的执行过程,即定义“能做什么”

    注:
    1、在类中赋值的变量叫做属性,类中定义的函数叫作方法(以此和普通函数区分)
    2、实例方法是指类中参数带self的函数,是类方法的一种形式,也是最常用的用法

2.1 类的创建

1、类的创建:class+类名+冒号

class leiming():
    pass #这里记得缩进

2、类的属性创建:通过赋值语句

#下面的 a 是变量
a=1
#下面的 a 是类 A() 的属性
clas A():
    a=1

3、实例方法的创建:def + 方法名(self)(重点:self 代表着实例化对象)

#下面的 B() 是函数
def B():
    pass
#下面的 B() 是类 A() 的方法 B()
class A():
    def B(self):
        pass

2.2 类的调用

class Computer:
    screen = True
    def start(self):
        print('电脑正在开机中……')
my_computer = Computer()
print(my_computer.screen)
my_computer.start()

1、第 5 行 “my_computer=Computer()” 指实例化类 Computer ,其中 my_computer 为实例化对象(即 self = my_computer);
2、第 6 行 “print(my_computer.screen)” 指调用了实例化对象的属性screen;
3、第 7 行 “my_computer.start()” 指调用了实例化对象的方法 start;

3. 创建类的两个关键点

3.1 self(代表着实例化对象本身)

第一点:只要在类中用def创建方法时,就必须把第一个参数位置留给 self,并在调用方法时忽略它(不用给self传参)。

icon 第二点:当在类的方法内部想调用类属性或其他方法时,就要采用self.属性名或self.方法名的格式

class Chinese:

    name = '我'  # 类属性name

    def say(person):
        print(person.name + '是中国人')

person = Chinese()   # 创建Chinese的实例person
person.say()         # 调用实例方法
#->  我是中国人
class Chinese:

    def greeting(self):
        print('很高兴遇见你')

    def say(self):
        self.greeting() 
        print('我来自中国')

person = Chinese()
# 创建实例person
person.say()
# 调用say()方法
#->  很高兴遇见你
#->  我来自中国

3.2 初始化方法

1、格式定义:def init(self),是由 init 加左右两边的【双】下划线组成 2、作用:当每个实例对象创建时,该方法内的代码无须调用就会自动运行

class Chinese:
    def __init__ (self):
        self.mouth = 1  # self.不能丢
        self.eye = 2

    def body(self):
        print('我有%s张嘴巴' % self.mouth)
        print('我有%s只眼睛' % self.eye)

person = Chinese()
person.body()
#->  我有1张嘴巴
#->  我有2只眼睛

以上初始化函数无需调用,一实例化直接运行。 3、利用这个特性,在编写习惯上,我们会在初始化方法内部完成类属性的创建,为类属性设置初始值,这样类中的其他方法就能直接、随时调用