栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

20211210Python基础打卡(十二)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

20211210Python基础打卡(十二)

二十二、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.csdn.net/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.csdn.net/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()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/657823.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号