Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言,本节主要总结Python入门之面向对象:类,对象,实例化,构造函数,类的属性和方法。
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。类似对象的抽象。
方法:类中定义的函数。(类的成员函数)
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
实例变量:定义在方法中的变量,只作用于当前实例的类。
数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。(类变量+实例变量)
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
实例化:创建一个类的实例,类的具体对象。(创建对象)
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
注:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。对象可以包含任意数量和类型的数据。
# coding:utf-8 # 计算器类,实现加减乘除 class Calculator: # 类的成员变量 name = 'My Calculator' # 类的成员函数 # 加法 def add(self, x, y): print(self.name, '--add') return x + y # 减法 def minus(self, x, y): print(self.name, '--minus') return x - y # 乘法 def times(self, x, y): print(self.name, '--times') return x * y # 除法 def divide(self, x, y): print(self.name, '--divide') return x / y
注:类的名称一般首字母大写,变量和函数名称一般首字母小写(养成良好的编码习惯)
# 实例化计算器类 calculator = Calculator() print(calculator.name) sum = calculator.add(5, 8) print('5+8=', sum)
输出:
My Calculator
My Calculator --add
5+8= 13
注:创建一个类之后,可以通过类名访问其属性(obj.name,obj.function())
类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用
class People: # 类变量 公共变量 name = '' age = 0 sex = '男' # 类变量 私有变量 __site = 'www.xiaowangyun.com' # 构造函数 专有函数 def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex # 公共函数获取私有变量 def get_site(self): print('site:', self.__site) # 公共函数speak def speak(self): print('name:', self.name, ' age:', self.age, ' sex:', self.sex) # 私有函数speak def __speak(self): print('name:', self.name, ' age:', self.age, ' sex:', self.sex) # 实例化 xwy = People('小望云', 2, '女') xwy.speak() xwy.get_site() print(xwy.name) # 类的实例化对象访问类的私有方法和私有属性会报错 # print(xwy.__site) # xwy.__speak()
出现一个小问题,找了半天,哈哈,逗~ 围观一下:Python构造函数报错:TypeError: People() takes no arguments
注:
1)__init__ init前后各两个下划线_
2) 重写构造函数后,参数必须和构造函数所必须参数一致
3)self代表类的实例,而非类
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。
private_attrs:直接属性名字便是共有属性,类的实例化对象可以访问公共属性,但不能访问私有属性。
在类地内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定是用 self。
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。self代表类的实例,而非类。
即类里面定义的普通的函数,类的实例化对象可以访问公共方法,不能访问私有方法
__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.__private_methods。
__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__truediv__: 除运算
__mod__: 求余运算
__pow__: 乘方
注:方法名前后均有两个下划线(_)
编辑:孙小北
本文地址: https://www.xiaowangyun.com/wyblog/detail/?id=1023
版权归属: www.xiaowangyun.com 转载时请以链接形式注明出处
0 条评论