Python笔记(已经断更)

FunnyWii
FunnyWii
发布于 2022-10-18 / 13 阅读
0
0

Python笔记(已经断更)

一些Python的知识点(非报错及其解决方法)

啥是面向对象(OOP)

面向对象三要素封装、继承、多态

封装: 确标识出允许外部使用的所有成员函数和数据项,或者叫接口。有了封装,就可以区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者。

继承: 继承有两种含义:其一是继承基类的方法,并做出自己的改变和/或扩展——解决了代码重用问题;其二是声明某个子类兼容于某基类(或者说,接口上完全兼容于基类),外部调用者可无需关注其差别

多态: 基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑不同

init() 函数

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

使用 __init__() 函数将值赋给对象属性,或者在创建对象时需要执行的其他操作,每次使用类创建新对象时,都会自动调用 init() 函数。

比如根据class Person创建一个名为 p1的对象:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("Bill", 63)

print(p1.name)
print(p1.age)

self参数

self 参数是对类的当前实例的引用,用于访问属于该类的变量。它不必被命名为 self,可以随意调用,但它必须是类中任意函数的首个参数。比如,用 mysillyobjectabc代替 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("Bill", 63)
p1.myfunc()

子类的继承

# 创建父类
class Person:
# init父类
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname
# 父类中添加方法
  def printname(self):
    print(self.firstname, self.lastname)

# 创建子类
class Student(Person):
# 子类中init会覆盖掉原本父类的init,在这里加入了一个新的year参数
  def __init__(self, fname, lname, year):
  # super代表子类会继承父类所有熟悉和方法
    super().__init__(fname, lname)
    self.graduationyear = year
  # 在子类中定义一个新的方法 welcome
  def welcome(self):
    print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)

# 子类实例化为x
x = Student("Elon", "Musk", 2019)
x.welcome()

评论