目录
1.python 的全局变量和局部变量
全局变量定义:在函数外部定义的变量。所有函数内部都可以使用这个变量。
局部变量定义:在函数内部定义的变量。这个变量只能在定义这个变量的函数内部使用。
第一种:global定义全局变量在自定义函数内部
在Python中有一个global关键字用来声明一个全局变量
def first():
global key
key = 1
print(key)
def second():
print(key)
def third():
key = 3
print(key)
first()
second()
third()
print(key)
结论:上面例子说明了 global 定义全局变量:
- 在自定义函数内部定义global,用于告诉python这是一个全局变量
- 作用跟在全局作用域 里写下一个 全局变量a 是一样一样的效果
第二种:全局定义全局变量,并给其赋值
(注:在全局内写“key="值"相当于在全局内写“global key; key="值"”)
key = 0
def first():
key = 1
print(key)
def second():
print(key)
first()
second()
print(key)
2.python 类中public,protected,private定义方式
原则:多用 public 属性,少用 private 属性
在Python中可以通过在变量属性以及方法属性是否有下划线“_”进行区分public、protected、private类型。
- public类型:
xx 没有以下划线开头的变量或者方法是public类型(python中数据和方法默认都是pubic类型)
public类型可以被子类、类内以及类外被访问(全局访问,前提是引用该类)
- protected类型
_xx 以单下划线开头表示的是protected类型的变量或者方法。
protected类型只能允许其本身与子类进行访问(类内部使用,而不建议在类外部直接访问)
在Python中,受保护的变量仍然可以被访问。但是,这种直接访问受保护变量的做法是不鼓励的。使用受保护变量的主要目的是通过约定告知其他开发人员,这个变量是用于内部使用的,而不建议在类的外部直接操作。这种约定有助于维护代码的可读性、可维护性和灵活性,以保护内部实现细节并减少不必要的外部依赖。
- private
__xx 双下划线表示的是私有类型的变量或者方法
private类型只能允许类内进行访问
例子:
class My(object):
def __init__(self):
self.public_field = 5
self._protect_filed = 8
self.__private_field = 10
def get_private_filed(self):
return self.__private_field
obj = My()
print(obj.public_field) # 访问 public 属性
print(obj._protect_filed) # 访问 protected 属性
print(obj.__private_field) # 访问 private 属性会报错
3.python 中类的实例化
class MyObject(object):
def __init__(self):
self.public_field = 5
self._protect_filed = 8
self.__private_field = 10
__init__
是一个特殊的方法(也称为构造方法或初始化方法),用于在创建类的实例时进行初始化操作。- 实例化时,调用类的
__init__
方法,并传入self
参数(表示新创建的实例对象)
在 Python 中,self
是一个惯例性参数名,它表示类的实例对象自身。当你定义类的方法时,第一个参数通常被称为 self
,它表示该方法是一个实例方法,可以在类的实例对象上调用。