十分钟python 入门 类/对象 继承

Python 类/对象

Python 中的几乎所有东西都是对象,拥有属性和方法。

类(Class)类似对象构造函数,或者是用于创建对象的“蓝图”。

创建类

如需创建类,请使用 class 关键字:

#如需创建类,请使用 class 关键字:
class MyClass:
  name = '小明'
  age = 11

创建对象

现在我们可以使用名为 myClass 的类来创建对象:

#现在我们可以使用名为 myClass 的类来创建对象:
p1 = MyClass()
print(p1.name)
#输出:小明

__init__() 函数

上面的例子是最简单形式的类和对象,在实际应用程序中并不真正有用。

要理解类的含义,我们必须先了解内置的 __init__() 函数。

所有类都有一个名为 __init__() 的函数,它始终在启动类时执行。

使用 __init__() 函数将值赋给对象属性,或者在创建对象时需要执行的其他操作:

#__init__() 函数
#创建名为 Person 的类,使用 __init__() 函数为 name 和 age 赋值:
class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("小明", 11)

print(p1.name, p1.age)
#输出:小明 11

对象方法

对象也可以包含方法。对象中的方法是属于该对象的函数。

#对象也可以包含方法。对象中的方法是属于该对象的函数。
class Person1:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  #self 参数是对类的当前实例的引用,用于访问属于该类的变量
  def myfunc(self):
    print("Hello my name is " + self.name)

p1 = Person1("小明", 11)
p1.myfunc()
#输出:Hello my name is 小明

self 参数

self 参数是对类的当前实例的引用,用于访问属于该类的变量。

它不必被命名为 self,您可以随意调用它,但它必须是类中任意函数的首个参数

#self 参数是对类的当前实例的引用,用于访问属于该类的变量
#它不必被命名为 self,您可以随意调用它,但它必须是类中任意函数的首个参数:
class Person3:
  def __init__(mysillyobject, name, age):
    mysillyobject.name = name
    mysillyobject.age = age

  def myfunc(abc):
    print("Hello my name is " + abc.name)

p1 = Person3("小明", 12)
p1.myfunc()
#输出:Hello my name is 小明

对象属性

#修改对象属性
p1.name = '小红'
p1.myfunc()
#输出:Hello my name is 小红

#del 关键字删除对象的属性
del p1.age
print(p1.age)

#删除对象
del p1

 __enter__ 和 __exit__ 方法

对于系统资源如文件、数据库连接、socket 而言,应用程序打开这些资源并执行完业务逻辑之后,必须做的一件事就是要关闭(释放)该资源。

#当离开 with 代码块的时候,系统会自动调用 __exit__() 方法, with 的作用和使用 try/finally 语句是一样的
class Testwith(object):
  '''
  with 包含了 __enter__ 和 __exit__ 方法
  '''

  def __enter__(self):
    print('run now ')

  def __exit__(self, exc_type, exc_val, exc_tb):
    if exc_tb is None:
      print('exit normal ')
    else:
      print('exit with exception')

#首先执行expression里面的__enter__函数,它的返回值会赋给as后面的variable。
#–>然后,开始执行with-block中的语句,不论成功失败(比如发生异常、错误,设置sys.exit()),在with-block执行完成后,会执行expression中的__exit__函数。
with Testwith():
  print('test')
  #抛出异常
  raise NameError('Exception')

 Python 继承

继承允许我们定义继承另一个类的所有方法和属性的类。

父类是继承的类,也称为基类。

子类是从另一个类继承的类,也称为派生类。

创建父类

#创建父类
class Person:
  def __init__(self, fname, age):
    self.firstname = fname
    self.age = age

  def printname(self):
    print(self.firstname, self.age)

# 使用 Person 来创建对象,然后执行 printname 方法:
x = Person("小明", "12")
x.printname()
#输出:小明 12

创建子类

#创建子类
class Student(Person):
  pass

a = Student('小红', '12')
a.printname()
#输出:小红 12

添加 __init__() 函数

到目前为止,我们已经创建了一个子类,它继承了父类的属性和方法。

#当您添加 __init__() 函数时,子类将不再继承父的 __init__() 函数。
#如需保持父的 __init__() 函数的继承,请添加对父的 __init__() 函数的调用:
class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)

a = Student('小红', '12')
a.printname()
#输出:小红 12

使用 super() 函数

Python 还有一个 super() 函数,它会使子类从其父继承所有方法和属性:

#super() 函数,它会使子类从其父继承所有方法和属性:
class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)

添加属性方法

#添加属性方法
class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

  def welcome(self):
      print("Welcome", self.firstname, self.age, "to the class of", self.graduationyear)

x = Student("小明", "12", 2019)
print(x.graduationyear)
#输出:2019
x.welcome()
#输出:Welcome 小明 12 to the class of 2019

 源码下载

 若此文档不够详细,​可以参考十分钟学会python_哔哩哔哩_bilibili​

你可能感兴趣的:(python入门,python,类,对象,继承)