20211210Python基础打卡(十二)

本文详细介绍了Python中的面向对象编程,包括如何创建类和对象,使用`__init__`函数初始化对象,定义对象方法,修改和删除对象属性。还探讨了类的继承,创建父类和子类,以及如何通过`super()`函数和添加新方法来扩展子类的功能。此外,文章还展示了如何在子类中添加属性和方法,以实现特定的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二十二、Python类和对象

Python是面向对象的编程语言,Python中几乎所有的东西都是一个对象,有它的属性和方法,类就像一个对象构造函数,或者是创建对象的“蓝图”。

(一)创建类

使用关键字class

class MyClass:
    x=100
print(myclass)

在这里插入图片描述

(二)创建对象

使用class创建类后创建对象并输出

class MyClass:
    x=100
p=MyClass()
print(p.x)

在这里插入图片描述

(三)init()函数

所有类都有一个名为init()的内置函数,它总是在类被初始化时执行。使用init()函数为对象属性赋值,或者在创建对象时需要执行的其他操作。
注意:init()函数每次使用该类创建新对象都会自动调用该函数。
遇到问题:
在这里插入图片描述
解决:
在这里插入图片描述
参考:

https://blog.youkuaiyun.com/qq_41903671/article/details/81609765

class person:
    def __init__(self,name,age):
        
        self.name=name
        self.age=age       
p=person("zym","22")
print(p.name)
print(p.age)

在这里插入图片描述

(四)对象方法

例如在person类中创建一个方法

class person:
    def __init__(self,name,age):
        
        self.name=name
        self.age=age   
    def myfunc(self):
        print("my name is "+self.name)
p=person("zym","22")
print(p.name)
print(p.age)
p.myfunc()

在这里插入图片描述

(五)自参数

self参数是对当前实例的引用,用于访问属于该类的变量,它不必命名self就可以随意调用它,但它必须是类中任何函数的第一个参数。

lass Person:
    def __init__(,ysillyobject,name,age):
        mysillyobject.name=name
        mysillyobject.age=age
        def myfunnc(abc):
            print("my name is "+abc.name)
p=Person("zym",22)
p=myfunc()

在这里插入图片描述
参考:

https://blog.youkuaiyun.com/qq_42719751/article/details/102535051
https://www.cnblogs.com/lenfoo/p/11251517.html

而实际上的代码应该是:

class Person:
    def __init__(mysillyobject,name,age):
        mysillyobject.name=name
        mysillyobject.age=age
        def myfunnc(abc):
            print("my name is "+abc.name)
p=Person("zym",22)
p.myfunnc()

是”class“!!!不是”lass“!!!
但是也出现了错误:
在这里插入图片描述

https://www.imooc.com/qadetail/330398
在这里插入图片描述

所以最终的代码是

class Person:
    def __init__(mysillyobject,name,age):
        mysillyobject.name=name
        mysillyobject.age=age
    def myfunnc(abc):
            print("my name is "+abc.name)
p=Person("zym",22)
p.myfunnc()

在这里插入图片描述

(六)对象及其属性更改

1、替换

例如修改年龄为23

class Person:
    def __init__(mysillyobject,name,age):
        mysillyobject.name=name
        mysillyobject.age=age
    def myfunnc(abc):
            print("my name is "+abc.name)
p=Person("zym",22)
p.myfunnc()
p.age=23
print(p.age)

在这里插入图片描述

2、删除对象属性

例如删除age属性

class Person:
    def __init__(mysillyobject,name,age):
        mysillyobject.name=name
        mysillyobject.age=age
    def myfunnc(abc):
            print("my name is "+abc.name)
p=Person("zym",22)
p.myfunnc()
p.age=23
print(p.age)
del p.age
print(p.age)

在这里插入图片描述

3、删除对象

删除对象p

class Person:
    def __init__(mysillyobject,name,age):
        mysillyobject.name=name
        mysillyobject.age=age
    def myfunnc(abc):
            print("my name is "+abc.name)
p=Person("zym",22)
p.myfunnc()
p.age=23
print(p.age)
del p
print(p)

在这里插入图片描述

(七)pass语句

class定义不能为空,但如果没有内容时放入pass语句避免出错。

class Person:
  pass

二十三、Python继承

继承允许我们定义一个从另一个类继承所有方法和属性的类。父类是被继承的类,也称为基类。子类是从另一个类继承的类也称为派生类。

(一)创建父类

任何类都可以是父类,因此语法与创建任何其他类相同。
创建一个名为Person、firstname和lastname属性的类以及一个printname方法:

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

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


x = Person("川川", "菜鸟")
x.printname()

在这里插入图片描述

(二)创建子类

要创建从另一个类继承功能的子类,则在创建子类时将父类作为参数发送。
例如:创建一个名为Student的类,它将继承父类person的属性和方法。
注意:pass是不想向类添加任何其它属性或者方法时使用的关键字。

class Student(person):
    pass

在这里插入图片描述
现在Student类具有与person类相同的属性和方法,使用Student类创建对象,然后执行printname方法。

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

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

class Student(Person):
  pass

x = Student("川川", "菜鸟")
x.printname()

在这里插入图片描述

(三)添加init()函数

把init()函数添加到Student类中。
(init()函数每次使用该类创建对象时会自动调用该函数)

class Student(Person):
  def __init__(self, fname, lname):

添加__init__()函数后子类不再继承父类的__init__()函数。子类的__init__()函数功能会覆盖父类的init功能,为了保持父类的继承添加对负函数的调用__init__()

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

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

class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)

x = Student("川川", "菜鸟")
x.printname()

在这里插入图片描述

(四)使用super()函数

super()函数可以让子类继承其父类的所有方法和属性

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

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

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)

x = Student("川川", "菜鸟")
x.printname()

在这里插入图片描述

(五)添加属性

添加一个属性调用graduationyear到Student类

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

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

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)
    self.graduationyear = 2021

x = Student("川川", "菜鸟")
print(x.graduationyear)

在这里插入图片描述
年份2019应该是一个变量,并在创建学生对象时传递给Student类。因此在init()函数中添加另一个参数year,并在创建对象时传递正确的年份。

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

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

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

x = Student("川川", "菜鸟", 2021)
print(x.graduationyear)

在这里插入图片描述

(六)添加方法

添加一个调用welcome到Student类的方法

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

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

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)

x = Student("川川", "菜鸟", 2021)
x.welcome()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值