python类的创建和关系

python类的创建和关系

一、定义和创建类

要创建类,需要使用关键字“class”。

示例:创建一个名为myname的类如下

class myname:
    x =100
print(myname)

解释:该类名为myname,x为其属性名。

1.私有属性

类的一些属性是被对象无法调用的,只有在类的内部才可以使用。

示例:

class jifen:
  _count=0
  _name=''
  def __init__(self,name,count):
    self._count += count
    self._name =name
  def seek (self):
    print(self._name+'积分'+str(self._count))
m=jifen('小王',300)
m.seek()

输出:

小王积分300

解释:输出时使用+连接字符串,因为是count是数字,所以使用str函数转化为字符串。

2.私有方法

私有方法和私有属性同理,可类比去记忆理解。

class jifen:
  def _jisuan(self,count):
    print('更改积分为:'+str(count))
m=jifen
m._jisaun(200)

输出:

Traceback (most recent call last):
  File "C:\Users\86139\学习\main.py", line 420, in <module>
    m._jisaun(200)
AttributeError: type object 'jifen' has no attribute '_jisaun'

解释:函数jisuan是私有方法,调用报错。

二、创建对象

接着上面的代码继续完善,使用myname的类创建对象。

示例:

   print("Flase")
class myname:
    x = 100
user = myname()
print(myname.x)

输出:

100

解释:在该类中创建user这个对象,并输出x的值。

三、init()函数

定义:所有的类中都有一个名为init的函数,作用是在类初始化时执行。使用init函数为对象属性赋值

,或在创建对象执行其他操作。

示例:

class myname:
    def __init__(self,name,age):
        self.name= name
        self.age= age
user = myname("小王",20)
print(user.name)
print(user.age)

输出:

小王
20

解释:使用init函数给name,age赋值。

四、对象方法

个人理解:init函数负责初始化给属性赋值;对象方法则是再定义一个函数调用

属性执行输出。

示例:

class myname:
    def __init__(self,name,age):
        self.name= name
        self.age= age
    def my(self):
        print("我的名字:"+self.name,"年龄:"+self.age)
user = myname("小王","二十")
user.my()

输出:

我的名字:小王 年龄:二十

解释:通过init函数将对象的属性赋值,再通过my函数调用输出。

5.pass语句

与之前的循环中的pass语句原理一样,可以类比去记去理解。

class myname:
  pass

解释:class的定义不能为空,如果出于某种寻求需要一个没有内容的类。则需要放入pass语句以免报错。

五、对象属性的更改

1.替换

替换:如字面意思将属性的赋值更改掉。

class myname:
    def __init__(self,name,age):
        self.name= name
        self.age= age
    def my(self):
        print("我的名字:"+self.name,"年龄:"+self.age)
user = myname("小王","二十")
user.age = 22
print(user.age)

输出:

22

解释:将age属性的赋值更改由20改为22。

2.删除

删除:同理将属性直接从类中删除。

示例:

class myname:
    def __init__(self,name,age):
        self.name= name
        self.age= age
        del user.age
    def my(self):
        print("我的名字:"+self.name,"年龄:"+self.age)
user = myname("小王","二十")
del user.age
print(user.age)

输出:会报错

解释:age已经被删除,未有该属性。

六、类与类的关系

1.继承

(1)单继承

被继承类称为:基类,父类,超类;继承者称为:子类,一个子类可以继承它的父类的任何属性和方法。

类的继承语法:

class 类名 (被继承父类的名字)
    .......

示例:

class father:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname
  def printname(self):
    print(self.firstname, self.lastname)
class sun(father):
  pass
x = sun("小王", "憨憨")
x.printname()

输出:

小王 憨憨

逻辑解释:在上面的代码中,定义了一个父类father,一个子类sun;sun类的内容为pass空。通过:class sun(father):继承了father类的属性方法。

(2)多继承

一个子类可以同时继承两个或两个以上的父类,这种情况称为:多继承。

示例:

class animals:
  color =''
  weight=0
  def jump(self):
    print('我能跳')
class cats:
  def maomi(self):
    print('喵喵')
class mycat (animals,cats):
  def catch(self):
    print('我才能抓到老鼠')
c=mycat()
c.jump()
c.maomi()
c.catch()

输出:

我能跳
喵喵
我才能抓到老鼠

2.在继承中添加init函数

接着上面的代码进行变化。

正确示例:

class father:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname
  def printname(self):
    print(self.firstname, self.lastname)
class sun(father):
  def __init__(self, fname, lname):
    father.__init__(self, fname, lname)
x = sun("小王", "憨憨")
x.printname()

输出:

小王 憨憨

错误示例:

class father:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname
  def printname(self):
    print(self.firstname, self.lastname)
class sun(father):
  def __init__(self, fname, lname):
x = sun("小王", "憨憨")
x.printname()

输出:

  File "C:\Users\86139\学习\main.py", line 388
    x = sun("小王", "憨憨")
IndentationError: expected an indented block

解释:错误原因子类未曾调用父类的init,为保持对父类的继承仍需要调用init函数。

3.super函数

super函数的作用:可以让子类继承其父类的所有属性和方法。

class father:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname
  def printname(self):
    print(self.firstname, self.lastname)
class sun(father):
  def __init__(self, fname, lname):
    super().__init__( fname, lname)
x = sun("小王", "憨憨")
x.printname()

输出:

小王 憨憨

4.添加属性

作用:增添一个属性到子类中。

便于理解用上面的代码进行简单更改。

示例:

class father:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname
  def printname(self):
    print(self.firstname, self.lastname)
class sun(father):
  def __init__(self, fname, lname):
    super().__init__( fname, lname)
    self.xinxi =22
x = sun("小王", "憨憨")
x.printname()
print(x.xinxi)

输出:

小王 憨憨
22

理解

5.添加方法

作用:添加一个方法到子类中。

便于理解用上面的代码进行简单更改。

示例:

class father:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname
  def printname(self):
    print(self.firstname, self.lastname)
class sun(father):
  def __init__(self, fname, lname,xinxi):
    super().__init__( fname, lname)
    self.xinxi =22
  def san(self):
    print("姓名",self.firstname,"性别",self.lastname,"年龄", self.xinxi)
x = sun("小王", "憨憨","22")
x.san()

输出:

姓名 小王 性别 憨憨 年龄 22

猜你喜欢

转载自blog.csdn.net/weixin_61805348/article/details/124929396