Python-对象、类、属性和方法

0 前言

1 第一个程序

  • 1.1 Python语言规范
  • 2 Python是一门面向对象的语言
  • 2.1 面向对象,类和方法
  • 2.2 查看类的属性与方法
  • 2.2.1 查看内置库的属性与方法
  • 2.2.2 查看第三方库的属性与方法
  • 2.3 部分方法说明

0 前言

>>返回Python系列文章目录<<

1 第一个程序

# -*- coding: UTF-8 -*-

'''
多行注释
创建员工类
'''
class Employee:
# 单行注释,员工类
    empCount = 0
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary
        Employee.empCount += 1

    def displayCount(self):
        print("Total Employee " Employee.empCount)
    
    def displayEmployee(self):
        print("Name : ", self.name,  "Salary: ", self.salary)
 
employee1 = Employee('xiaoming', 2000)
salary = employee1.salary

1.1 Python语言规范

在Python中不遵守编译器的规定,编译器在编译时就会报错,这个规定叫作规则。

  1. 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。当然你也可以为源码文件指定不同的编码。
# -*- coding: UTF-8 -*-
  1. Python中单行注释以 # 开头,多行注释用'''注释'''或者"""注释"""。
  2. python最具特色的就是使用缩进来表示代码块,不需要使用大括号{} 。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
  3. Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠\来实现多行语句,例如:
total = item_one + \
        item_two + \
        item_three
  1. 在 [],{}, 或() 中的多行语句,不需要使用反斜杠\,例如:
total = ['item_one', 'item_two', 'item_three',
        'item_four', 'item_five']

2 Python是一门面向对象的语言

2.1 面向对象,类和方法

面向对象是将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更加接近人的思维:

class MyClass(FatherClass)             # 创建MyClass类,父类为FatherClass
    self.my_attribute = value          # MyClass具有属性my_attribute
    def __init__(self)                 # 创建MyClass时执行初始化操作
        super().__init__()             # 继承FatherClass的初始化操作
        # code                         # MyClass新增的初始化操作

    def myMethod(self)                 # MyClass的方法
        # code

面向对象三大特征:封装(私有),继承,多态。 在Python中,一切内容都是对象,一切函数都是对象的方法。

2.2 查看类的属性与方法

2.2.1 查看内置库的属性与方法

对于Python内置库的标准类,Python提供了查看类信息的方法。在CMD的Python编辑状态或者Pycharm软件的Python Console中可使用。

python 获取类里面的function名称_面向对象

  1. dir()查看类的方法和属性
dir(str)

得到以下结果:

['__add__',
 '__class__',
 '__contains__',
 '__delattr__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getitem__',
 '__getnewargs__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__iter__',
 '__le__',
 '__len__',
 '__lt__',
 '__mod__',
 '__mul__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__rmod__',
 '__rmul__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 'capitalize',
 'casefold',
 'center',
 'count',
 'encode',
 'endswith',
 'expandtabs',
 'find',
 'format',
 'format_map',
 'index',
 'isalnum',
 'isalpha',
 'isascii',
 'isdecimal',
 'isdigit',
 'isidentifier',
 'islower',
 'isnumeric',
 'isprintable',
 'isspace',
 'istitle',
 'isupper',
 'join',
 'ljust',
 'lower',
 'lstrip',
 'maketrans',
 'partition',
 'replace',
 'rfind',
 'rindex',
 'rjust',
 'rpartition',
 'rsplit',
 'rstrip',
 'split',
 'splitlines',
 'startswith',
 'strip',
 'swapcase',
 'title',
 'translate',
 'upper',
 'zfill']

以上是字符串str类所具有的全部方法,对字符串可以进行的全部操作都由上面的方法定义。

比如dir(str)这个函数的效果就是由__dir__方法定义的。

比如str1 + str2这个操作符的效果就是由 __add__方法定义的。

  1. help()可以查看类和类方法的说明文档
help(str)        # 查看str类说明和所有方法说明
help(str.__len__)    # 查看方法str.__len__的说明

注意,所有方法都可以采用 类实例名.方法名() 的方式调用,比如:

str.__len__()
str.upper()

但是,len()并不是str类 的方法,而是 __len__ 方法中定义的函数表达式,所以

len(str)   # 正确
str.len()  # 错误

前后双下划线的__方法名__是系统定义的特殊方法,通常对应特殊的语法,运算符和函数。

2.2.2 查看第三方库的属性与方法

对于自己安装的第三方库,无法使用 dir()和 help()查看信息,可以在CMD 控制台和Pycharm软件的Terminal中输入指令:

python -m pydoc -p 1234

python 获取类里面的function名称_面向对象_02

浏览器会打开help目录,你所有安装过的第三方库api都可以查看,当然内置标准库也早在这里也可以看到。

python 获取类里面的function名称_面向对象_03

2.3 部分方法说明

对于MyClass类,创建类实例 x,如果类具有以下属性,则x从类中获得相应的方法:

x = MyClass()

方法

说明

所写代码

__doc__

类型帮助信息

help(x)

__init__

创建类实例时初始化

x = MyClass()

__str__

类的文本形式

print(x)

__dir__

列出所有属性和方法

dir(x)

__len__

序列的长度

len(x)

__contains__

了解某序列是否包含特定的值

a in x

__eq__

相等

x == y

__ne__

不相等

x != y

__lt__

小于

x < y

__le__

小于或等于

x <= y

__gt__

大于

x > y

__ge__

大于或等于

x >= y

__bool__

布尔上上下文环境中的真值

if x:

__enter__

内存访问资源

open()

__exit__

内存清除资源

close()

__new__

类构造器

x = MyClass()

__del__

类析构器

del x

__add__

加法运算发

x + y

__call__

回调

x()

__getattribute_

属性调用

x.属性


>>返回Python系列文章目录<<