一、类的定义+通过实例对象来调用方法
如:
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)如果在子类添加新的方法与父类某方法的方法名相同, 则调用此方法时会覆盖父类的此方法