一、类的定义+通过实例对象来调用方法

如:

class MyClass():
        def __init__(self,name):
             self.name=name
       def say(self):
             print('hello',self.name)
myobject=MyClass('jack')      # 实例化类:实例一个类的对象
myobject.say()                       # 调用类的对象方法
#=> hello jack

1)类的参数其实就是__init__初始化方法的参数

2)与函数不同的是,类的实例化永远只返回它的实例对象

3)实例是由类“铸造”的产物,称之为对象

4)在类的定义中,使用self来表示具体的对象;一个类可以实例出任意多个对象,且所有对象在初始时具有相同的功能

5)使用类方法之前,一般都需要先实例一个类的对象;大部分 类方法需要通过实例对象来调用

二、通过类本身来调用方法

(1)方式一:静态方法

class MyClass():
        def __init__(self,name):
             pass
       @staticmethod
       def say(name):
             print('hello',name)
MyClass.say('jack')          #=> hello jack

1)定义方法时 添加@staticmethod注解,python解释器识别出是静态方法,则通过类也可以直接调用

2)静态say方法少了一个self参数,因为通过类调用的时候还没有实现实例化,也就没有self参数传给它

(2)方式二:类方法

class MyClass():
        def __init__(self,name):
             pass
       @classmethod
       def say(cls,name):
             print('hello',name)
MyClass.say('jack')          #=> hello jack

1)定义类方法时需添加@classmethod注解

2)同时say方法的第一个参数换成cls,它代表MyClass类本身

三、类的继承特性

class Person():                  #父类
        def __init__(self,name):
             self.name=name
       def say(self):
             print('my name is',self.name)
class Man(Person):                    #子类
       def say(self,name):             #覆盖父类的say方法        
             print('hello',name)         #子类的新的方法
       def sex(self):
             print('I am man')
man=Man(‘jack’)
man.say()                 #=> hello jack 
man.sex()                #=> I am man

1)类除了能把数据和方法封装在一起之外,还支持继承

2)被继承的为父类,继承的为子类;子类拥有父类的所有开放数据和方法,父类不可以访问子类定义的任何内容

3)如果在子类添加新的方法与父类某方法的方法名相同, 则调用此方法时会覆盖父类的此方法