python面向对象--类

千锋 2019-10-28

1.类的基本语法

# python 类语法  class      def 函数名(参数):函数的关键字
# class 类名:类名的规范:数字字母下划线组成 不能以数字开头,首字母大写,驼峰命名
# 类属性:类中的变量值
# 类方法:类中的函数

例如:

class BoyFriend:
    # 类属性
    height = 175
    weight = 130
    money = ‘5000w‘

    # 类函数/方法        每个类方法参数都必须含有一个参数表示自身,一般用self表示
    def cooking(self): # 会做饭
        print("男朋友要会做饭")

    def earn(self): # 会挣钱  == def earn(a)
        print("男朋友月薪要2万")
# 实例/对象  具体的一个例子  类名() 实例具有类中的所有属性和方法的权限  实例调用方法
# 调用属性: 实例.属性名
# 调用方法/函数:实例.方法名()  以def开头
bf = BoyFriend() # 创建实例
bf.cooking() # 打印BoyFriend的cooking()方法
bf.earn()

print(bf.money) # 打印类属性

2.类方法

例如:

class Teacher():
    age = 23
    name = ‘kite‘
    def coding(self):  # 实例方法
        print("会自动化测试")

    def cooking(self): # 实例方法
        print("会做饭")

    @classmethod #类方法
    def swimming(cls):
        print("老师还要会游泳")

    @staticmethod # 静态方法
    def sing():
        print("老师还要会唱歌")

不同类方法实例化的区别:

# 类的方法:

# (1)实例方法  ---self:实例本身   只能实例来调用,才能调用方法
teacher = Teacher() # 隐身的传递
# a.
teacher.cooking()
# b.等效于a.
Teacher.cooking(teacher) # 显示的传递

# (2) 类方法:@classmethod  创建实例与否,均可以调用方法
Teacher.swimming() # 未创建实例,调用方法
teacher.swimming()# 创建了实例,调用方法

# (3) 静态方法 @ staticmethod       创建实例与否,均可以调用方法
Teacher.sing() # 未创建实例,调用方法
teacher.sing()# 创建了实例,调用方法
总结
# 同:实例方法self, 类方法cls,静态方法(普通方法)  实例和类名都可以直接调用
# 不同:静态方法和类方法不可以调用类中的属性值, 如果需要参数,需自己传递参数
# 什么时候定义静态和类方法 ? 当某个函数与其他的类函数、类属性无任何关联时

3.初始化方法

# 初始化函数
class LemonTeacher:
    # 初始化方法(属于实例方法),一般不传动态参数和关键字参数,没有return返回值
    # 其他方法调用初始化属性:self.属性名
    def __init__(self,name,height,age=23):
        self.name = name
        self.age = age
        self.height = 180


    def coding(self):  # 实例方法
        print("会自动化测试")

    def cooking(self,*args): # 实例方法
        # print("会做饭")
        for item in args:
         print(self.name + ‘会做{0}‘.format(item))

    def teacher_info(self,*args):
        self.cooking(*args) # 参数动态化
        # self.cooking(‘海鲜大餐‘,‘蛤蜊汤‘) # 调用其他方法
        print("{0}老师,今年{1}岁,身高{2},可以嫁人了!".format(self.name,self.age,self.height))


    @classmethod #类方法
    def swimming(cls):
        print("老师还要会游泳")

    @staticmethod # 静态方法
    def sing():
        print("老师还要会唱歌")


# 初始化方法
t1 = LemonTeacher(‘kite‘,18)
t2 = LemonTeacher(‘shiguang‘,18)
t3 = LemonTeacher(‘lyb‘,18)
# 调用方法
t1.swimming()
t2.cooking()
t3.coding()

# 总结
# 什么时候用初始化方法? 想用就用  如果某个属性值是多个函数共用的,就可以用初始化函数
t1.cooking(‘蛋炒饭‘,‘西红柿炒蛋‘)
t1.teacher_info()

t2.teacher_info(‘fish‘,‘shrimp‘)

相关推荐