Python——类和对象
Python是一门面向对象的语言。
几乎Python中所有东西都是带有属性和方法的对象。
“类"就像是一个对象的构造器,或者创造对象的"蓝图”。
1.创建一个类
class MyClass:
x = 3
2.创建一个对象
p1 = MyClass()
print(p1.x)
3. “__init__()” 函数
上述两步为类的最简单例子,真正要理解类,还得搞清楚这个内置的__init__()
函数。
所有的类都具有__init__()
的一个函数,用于在类被初始化的时候执行,即——构造函数。
class Student:
#用来学习python面向对象的类
num = 0
def __init__(self,name,age):
self.name = name
self.age = age
Student.num += 1
def Say(self):
print("my name is:%s,I am %d years old"%(self.name,self.age))
S1 = Student("小明",22)
print(S1.name)
print(S1.age)
结果:
4.对象方法
class Student:
#用来学习python面向对象的类
num = 0
def __init__(self,name,age):
self.name = name
self.age = age
Student.num += 1
def Say(self):
print("my name is:%s,I am %d years old"%(self.name,self.age))
S1 = Student("小明",22)
S1.Say()
结果:
注意:class的方法中,第一个参数都必须为self
。self
参数是对类的当前实例的引用,用于访问属于类的变量。
它不一定要被命名为self,你可以叫它任何你喜欢的名字,但是它必须是类中任何函数的第一个参数:
class Student:
#用来学习python面向对象的类
num = 0
def __init__(xxx,name,age):
xxx.name = name
xxx.age = age
Student.num += 1
def Say(what):
print("my name is:%s,I am %d years old"%(what.name,what.age))
S1 = Student("小明",22)
S1.Say()
结果:
5.继承
继承允许我们定义一个从另一个类继承所有方法和属性的类。
父类是要继承的类,也称为基类。
子类是继承自另一个类的类,也称为派生类。
任何类都可以是父类,因此语法与创建任何其他类相同:
- 创建一个(父)类
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
def printname(self):
print(self.firstname, self.lastname)
x = Person("John", "Doe")
x.printname()
- 创建一个子类
要创建从另一个类继承功能的类,在创建子类时将父类作为参数发送:
#创建一个”Student“子类,继承"Person"父类
class Student(Person):
pass
注意:当你不想添加其他的任何属性或方法时,使用pass
填充。
这时Student类和Person类有着相同的属性和方法。
- 添加
__init__()
函数
class Student(Person):
def __init__(self, fname, lname):
#add properties etc.
当添加了__init__()
函数,子类将不再继承父类的__init__()
函数。
若想保持继承父类的__init__()
函数,那么需要添加:
class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
另外,还可以使用super()
函数来让子类继承父类所有的属性和方法。
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
- 添加属性
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
self.graduationyear = 2019
- 添加方法
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear = year
def welcome(self):
print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)
注意:当你在子类中添加了和父类中名字一样的方法,这个继承自父类的方法则会被重写。