Python 笔记01 (变量和面向对象编程)

一 args 和 kwargs 的使用

注意 args 是一个*, kwargs是 ** 。

def func_1(a, b):
    print(f'a:{a}, b:{b}')


def func_2(*args):   # args: 个数可变的位置传参
    print(f'args:{args}')


def func_3(a=100, **kwargs):   # kwargs 是个数可变的关键字参数
    print(f'a:{a}, kwargs:{kwargs}')


func_1(1, 2)
func_2(1, 2)
func_3(1)  # a:1, kwargs:{}
func_3(10, x=1000, y=2002)   # a:10, kwargs:{'x': 1000, 'y': 2002}

二 变量的作用域

1 函数内部为局部变量,外部写的为全局变量。

2 可以使用global 全局化函数内部变量

三 面向对象的编程

1 面向对象,重点在过程

2 不变的做函数体,可变的做参数

3 使用面向对象的方式把大象放进冰箱

3.1 面向对象设计 animal对象

# 把大象装进冰箱
class Animal:
    def __init__(self, name):
        self.name = name

    def enter(self):
        print(f'{self.name} 走进冰箱')


class Fridge:
    def open(self):
        print(f'冰箱门打开')

    def close(self):
        print('关上冰箱门')


# 使用方法创建对象
fridge = Fridge()   # 创建冰箱对象
elephant = Animal('大象')
fridge.open()
elephant.enter()
fridge.close()

3.2 面向对象设计phone对象

class Phone():  # 可写可不写括号,有继承必须写+
    # init传入的变量只在init生效  brand, goods_name, goods_no, weight, place, color
    def __init__(self, brand, goods_name, goods_no, weight, place, color):  # 局部变量
        self.brand = brand
        self.goods_name = goods_name
        self.goods_no = goods_no
        self.weight = weight
        self.place = place
        self.color = color

    def info(self):  # 手机行为
        print(f'品牌:{self.brand}')
        print(f'商品名称:{self.goods_name}')
        print(f'商品编号:{self.goods_no}')
        print(f'机身重量:{self.weight}')
        print(f'商品产地:{self.place}')
        print(f'机身颜色:{self.color}')

    def call(self, name):  # name是方法的形式参数
        print(f'我使用{self.brand}正在给{name}打电话')


# 创建对象
huawei = Phone('honor', 'x40', '1004', '0.5kg', 'china', 'blue')   # 位置传参
huawei.info()
huawei.call('mother')

print('__________________________________________________')
meizu = Phone('meizu', '50', '2004', '0.6kg', 'china', 'blue')   # 位置传参
meizu.info()
meizu.call('mother')

print('__________________________________________________')
# 单独绑定属性
meizu.ipv6 = '支持IPV6'
print('查看单独绑定的属性:', meizu.ipv6)

3.3 动态绑定对象的方法

# 绑定方法
def send_message(content):
    print(f'发送短信,内容为:', content)

meizu.send_message = send_message  # 赋值不加括号,调用加括号
meizu.send_message('今天天气不错!!!')
print('查看内存位置:', id(send_message))
print('查看对象内存位置:', id(meizu.send_message))

3.4 property (属性) 的使用

property 是 Python 中的一个内置装饰器,用于将一个类方法变成一个属性。它的主要作用是允许你在访问类的属性时执行一些特定的操作,例如获取、设置、删除等,而在使用时就像访问普通的属性一样。这有助于封装类的内部实现细节,同时提供更多的控制和安全性。

class MyClass:
    def __init__(self, value):
        self._value = value  # 带下划线的属性通常被认为是私有属性

    @property
    def value(self):
        # 在访问属性时执行的代码
        return self._value

    @value.setter
    def value(self, new_value):
        # 在设置属性时执行的代码
        if new_value < 0:
            raise ValueError("Value must be non-negative")
        self._value = new_value

    @value.deleter
    def value(self):
        # 在删除属性时执行的代码
        print("Deleting value")
        del self._value

# 创建对象
obj = MyClass(42)

# 获取属性值
print(obj.value)  # 输出: 42

# 设置属性值
obj.value = 55

# 删除属性值
del obj.value

使用 property 装饰器的好处在于,它允许你隐藏属性的实际存储方式,从而更容易修改属性的内部实现,而不会影响外部代码。它还允许你添加自定义的验证逻辑,以确保属性的合法性。

猜你喜欢

转载自blog.csdn.net/March_A/article/details/133243314