# -*- coding: utf-8 -*-
# author:wyatt
# @time:2021/9/23 20:08


"""
类和对象
成员有的特性:属性
行为:方法

在类的作用域里面定义的函数称为方法。特殊的函数。
"""


class Mobile:
    # 类属性
    can_call = True

    def __init__(self, brand, color):
        self.brand = brand
        self.color = color

    def sell(self, price, discount=1):
        print(f'手机被卖了{price*discount}元')
        return price

    def call(self):
        print('正在打电话')
        self.take_photo()

    def take_photo(self):
        print('拍照')


mobile = Mobile('apple', '粉色')

# 实例方法的调用,只能有实例调用,类不能调用实例方法
# 对象.方法()
# 不能使用Mobile.sell()
# 当方法有参数时,遵循和普通函数一样的规则,要传参数就传
# __init__没有返回值,但其他函数该有返回值还是要有
result = mobile.sell(100, 1)
print(f'价格是{result}')

# 在类里面,一个实例方法想要调用另外一个方法,可以使用self.方法
result2 = mobile.call()

 

"""
类方法:类可以调用的方法,实例也可以调用
实例方法:实例可以调用,类不能调用
静态方法:在本质上只是一个普通的函数,刚好放在了类里面管理
"""


class Mobile:
    # 类属性
    can_call = True

    def __init__(self, brand, color):
        self.brand = brand
        self.color = color

    def sell(self, price, discount=1):
        print(f'手机被卖了{price*discount}元')
        return price

    def call(self):
        print('正在打电话')
        self.take_photo()

    def take_photo(self):
        print('拍照')

    # 类方法的定义  声明类方法
    @classmethod
    def abc(cls):
        print(f'这个类{cls}正在使用abc')

    @staticmethod
    def baozhaung():
        """
        没有固定参数,与类和对象没有直接关联
        无法使用self.属性和其他实例方法
        无法使用cls.属性 和其他类方法
        """
        print('这是一个静态方法')


mobile = Mobile('apple', '粉色')

# 调用类方法
Mobile.abc()

# 调用静态方法 无需实例化
Mobile.baozhaung()
mobile.baozhaung()
class Mobile:
    # 类属性
    can_call = True

    def __init__(self, brand, color):
        self.brand = brand
        self.color = color

    def sell(self, price, discount=1):
        print(f'手机被卖了{price*discount}元')
        return price

    def call(self):
        print('正在打电话')
        self.take_photo()

    def take_photo(self):
        print('拍照')

    # 类方法的定义  声明类方法
    @classmethod
    def abc(cls):
        print(f'这个类{cls}正在使用abc')

    @staticmethod
    def baozhaung():
        """
        没有固定参数,与类和对象没有直接关联
        无法使用self.属性和其他实例方法
        无法使用cls.属性 和其他类方法
        """
        print('这是一个静态方法')


class SmartPhone(Mobile):
    pass


# 父类的所有的属性和方法,子类都可以用
xiaomi = SmartPhone('xiaomi', '粉色')
xiaomi.call()

 

posted on 2021-09-23 23:19  熊猫星人  阅读(28)  评论(0编辑  收藏  举报