1、Python Classes/Objects
Python是一种面向对象的编程语言。
Python中的几乎所有东西都是对象,包括其属性和方法。
类就像对象的构造函数,或者是创建对象的"blueprint"。
2、定义类
要创建一个类,请使用关键字class:
例如:
创建一个名为MyClass的类,并带有一个名为x的属性:class MyClass:
x = 5
3、创建对象
现在我们可以使用名为MyClass的类来创建对象:
例如:
创建一个名为p1的对象,并打印x的值:p1 = MyClass()
print(p1.x)
4、__init__()方法
上面的示例是类和对象的最简单形式,在实际应用中并没有真正的用处。
要了解类的含义,我们必须了解内置的__init__()函数。
所有类都有一个名为__init__()的函数,它总是在类初始化时执行。
使用__init__()函数将值分配给对象属性,或创建对象时必须执行的其他操作:
例如:
创建一个名为Person的类,使用__init__()函数为名称和年龄分配值:class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("John", 36)
print(p1.name)
print(p1.age)
注意:每当使用该类创建新对象时,都会自动调用__init__()函数。
5、对象方法
对象也可以包含方法。对象中的方法是属于该对象的函数。
让我们在Person类中创建一个方法:
例如:
插入一个输出问候语的函数,并在p1对象上执行它:class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def myfunc(self):
print("Hello my name is " + self.name)
p1 = Person("John", 36)
p1.myfunc()
注意:self参数是对该类当前实例的引用,用于访问属于该类的变量。
6、self参数
self参数是对该类当前实例的引用,用于访问属于该类的变量。
它不必命名为self,您可以随意命名,但它必须是该类中任何函数的第一个参数:
例如:
使用单词mysillyobject和abc代替self:class Person:
def __init__(mysillyobject, name, age):
mysillyobject.name = name
mysillyobject.age = age
def myfunc(abc):
print("Hello my name is " + abc.name)
p1 = Person("John", 36)
p1.myfunc()
7、修改对象属性
您可以像这样修改对象的属性:
例如:
将p1的年龄设置为40:p1.age = 40
8、删除对象属性
您可以使用del关键字删除对象的属性:
例如:
从p1对象中删除age属性:del p1.age
9、删除对象
您可以使用del关键字删除对象:
例如:
删除p1对象:del p1
10、pass语句
class定义不能为空,但是如果出于某种原因,您有一个没有内容的class定义,请放入pass语句,以免 错误。
例如:class Person:
pass
11、Python面向对象类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
局部变量:定义在方法中的变量,只作用于当前实例的类。
实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
实例化:创建一个类的实例,类的具体对象。
方法:类中定义的函数。
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。