Python——类、对象、继承

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的方法中,第一个参数都必须为selfself参数是对类的当前实例的引用,用于访问属于类的变量。

它不一定要被命名为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)

注意:当你在子类中添加了和父类中名字一样的方法,这个继承自父类的方法则会被重写。

猜你喜欢

转载自blog.csdn.net/fakejvruo/article/details/124466430
今日推荐