Python之内建属性
一、__name__属性
1、作用:
__name__属性是Python中的一个内建属性,用来指示当前模块的名称。当一个模块被直接运行时,其__name__属性的值为"_main_";当一个模块被其他模块导入时,其__name__属性的值为模块名。
2、示例代码:
if __name__ == "__main__":
print("This module is running directly.")
else:
print("This module is imported by other modules.")
- 1
- 2
- 3
- 4
二、__doc__属性
1、作用:
__doc__属性是Python中的另一个内建属性,用于获取对象的文档字符串(docstring)。文档字符串是对函数、类、模块等对象的描述性信息,可以通过访问__doc__属性来获取。
2、示例代码:
def add(x, y):
"""
This function takes two arguments and returns their sum.
"""
return x + y
print(add.__doc__)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
三、__class__属性
1、作用:
__class__属性是Python中类的一个内建属性,用于获取对象所属的类。通过访问__class__属性,可以获取对象的类,并进一步调用类的其他属性和方法。
2、示例代码:
class Person:
def __init__(self, name):
self.name = name
person = Person("Alice")
print(person.__class__.__name__) # 输出:"Person"
- 1
- 2
- 3
- 4
- 5
- 6
四、__file__属性
1、作用:
__file__属性是Python中模块的一个内建属性,用于获取模块对应的文件路径。通过访问__file__属性,可以获取模块文件的绝对路径或相对路径。
2、示例代码:
import os
print(os.path.abspath(__file__)) # 输出:当前模块文件的绝对路径
- 1
- 2
- 3
五、__slots__属性
1、作用:
__slots__属性是Python中类的一个内建属性,用于限制实例可以动态添加的属性。通过在类内定义__slots__属性,可以限制实例只能拥有指定的属性,从而节省内存空间。
2、示例代码:
class Person:
__slots__ = ["name", "age"]
person = Person()
person.name = "Alice" # 正确
person.age = 25 # 正确
person.gender = "female" # 错误,__slots__不包含"gender"属性
- 1
- 2
- 3
- 4
- 5
- 6
- 7
六、__getitem__和__setitem__属性
1、作用:
__getitem__和__setitem__是Python中的魔术方法,用于实现对象的索引访问和赋值操作。通过定义这两个属性,可以使对象具有类似列表和字典的访问方式。
2、示例代码:
class MyList:
def __init__(self, *args):
self.data = list(args)
def __getitem__(self, index):
return self.data[index]
def __setitem__(self, index, value):
self.data[index] = value
my_list = MyList(1, 2, 3, 4, 5)
print(my_list[0]) # 输出:1
my_list[0] = 10
print(my_list[0]) # 输出:10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
七、__len__属性
1、作用:
__len__属性是Python中的魔术方法,用于获取对象的长度或大小。通过定义__len__属性,可以使对象具备len()函数的功能。
2、示例代码:
class MyList:
def __init__(self, *args):
self.data = list(args)
def __len__(self):
return len(self.data)
my_list = MyList(1, 2, 3, 4, 5)
print(len(my_list)) # 输出:5
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
八、__iter__和__next__属性
1、作用:
__iter__和__next__属性是Python中迭代器协议的两个魔术方法,用于实现对象的迭代功能。通过定义这两个属性,可以使对象能够使用for循环进行迭代。
2、示例代码:
class MyRange:
def __init__(self, start, end):
self.start = start
self.end = end
def __iter__(self):
return self
def __next__(self):
if self.start >= self.end:
raise StopIteration
current = self.start
self.start += 1
return current
my_range = MyRange(1, 5)
for num in my_range:
print(num) # 输出:1 2 3 4
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
以上是Python进阶教程中内建属性的详细阐述,包括_name_、_doc_、_class_、_file_、_slots_、_getitem_、_setitem_、_len_、__iter__和__next__等属性,它们在不同的场景和问题中发挥着重要的作用。
本教程介绍了如何在Mac OS系统中下载、安装、配置 Anaconda3,并介绍了换源的方法,最后介绍了常用的conda命令。本教程适用于苹果系统,如需要在Windows系统或者Liunx系统中安装Anaconda3,可移步至主页的其他博客。
(纯小白教程)windows下安装配置anaconda及常用的conda命令_anaconda windows-CSDN博客
(纯小白教程)Liunx系统安装Anaconda-CSDN博客
1.下载安装anaconda3
用苹果系统下的Safari浏览器打开清华anaconda下载包镜像地址:
Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
在下载页面选择合适版本的安装包。注意,如果你的Mac OS系统是arm架构的选择下载Anaconda3-xxx-MacOSX-aarch64.sh ,如果你的系统是x86架构的选择下载Anaconda3-xxx-MacOSX-x86_64.sh。我这里是x86系统,以下载 Anaconda3-2023.09-0-MacOSX-x86_64.sh为例。
耐心等待浏览器下载好anaconda安装包之后,找到Safari浏览器下载的文件路径(我这里下载到了/Users/zex/Downloads),接下来在终端中使用命令行安装Anaconda。
打开终端,利用cd命令将命令行工作目录切换到anaconda保存的目录(我这里是/Users/zex/Downloads)
cd /Users/zex/Downloads
然后对sh脚本文件增加可执行权限
chmod +x Anaconda3-2023.09-0-MacOSX-x86_64.sh
然后执行安装命令
./Anaconda3-2023.09-0-MacOSX-x86_64.sh
此时显示Anaconda的信息,如下图所示:
键盘输入 enter 以继续安装
然后会显示一大堆的软件安装协议,一直按 'enter' 键,直到询问是否同意协议,然后终端中输入 'yes'(注意'enter'键不要按过头了,当出现询问是否同意协议时,直接'enter'就代表不同意,安装直接中止了,需要从头再来)输入'yes'之后,然后‘enter’键继续安装
此时,询问anaconda 的安装路径,你可以自定义anaconda安装路径,我这里直接输入'enter' 选择默认安装路径。默认安装路径一般在: /Users/当前用户名/anaconda3
之后,等待一段时间,会出现下图所示的问询,意思是是否 现在在终端命令中初始化conda命令
注意,为了减少后续不必要的配置,这里要输入 'yes'
然后,关闭当前终端,再次打开终端
发现命令前出现 base 标志。在终端命令行中输入 conda ,若有返回,则anaconda 安装成功。
2.anaconda换源
由于anacond默认的官方源在国外,使用anaconda下载东西国外下载速度太慢,这里就有了国内的一些anaconda镜像源进行下载 ,比如清华源、中科大源,但这些源都不及conda-forge源稳定。
因此配置conda-forge源。
- class="hljs-ln-numbers"> class="hljs-ln-line hljs-ln-n" data-line-number="1">
评论记录:
回复评论: