类和对象(2)

类和对象(2)

1、类的定义:
类和对象都是对现实⽣活中事物的抽象
事物包含两部分
1)数据(属性)
2) ⾏为(⽅法)
调⽤⽅法 对象.⽅法名()
⽅便调⽤和函数调⽤的区别:如果是函数调⽤,调⽤时有⼏个形参,就会传递⼏个实参。如果是⽅法调⽤,默认传递⼀个参数,所以⽅法中⾄少得有⼀个形参。

在类代码块中,我们可以定义变量和函数
变量会成为该类实例的公共属性,所有的该实例都可以通过 对象属性名 的形式访问。
函数会成为该类实例的公共⽅法,所有该类实例都可以通过 对象⽅法名 的形式访问。

 class Kind:
     pass

2、对象的初始化:

class Kind:
    def __init__(self, name,age):
        self.name = name
        self.age = age
kind = Kind("十七", 18)

3、类属性:
实例属性(只有对象可以访问):self.XXX(类定义中) 或者 对象.XXX

class Kind:
    def __init__(self, name,age):
        self.name = name        #   self.XXX(类定义中)
        self.age = age          #   self.XXX(类定义中)
kind = Kind("十七", 18)
print(kind.name)                    #   对象.XXX 

4、实例方法
实例方法:self 对象调用

class Kind:
    def __init__(self, name,age):
        self.name = name        #   self.XXX(类定义中)
        self.age = age
    def hta(self):
        print("这是方法。")
kind = Kind("十七", 18)
kind.hta()                      #   对象调用

5、类方法
类方法:cls @classmethod 类和对象都可以调用。一般是类去调用

6、继承
继承是⾯向对象三⼤特性之⼀
通过继承我们可以使⼀个类获取到其他类中的属性和⽅法
在定义类时,可以在类名后⾯的括号中指定当前类的⽗类(超类、基类)
继承提⾼了类的复⽤性。让类与类之间产⽣了关系。有了这个关系,才有了多态的特性。

class Human:
  arms = 2
  legs = 2
  hair = '各种颜色的头发'
  def walk(self):
    print('直立行走')
  def speak(self):
    print('说着各式各样的语言')
class Chinese(Human):
  pass
xiaobei = Chinese()
print(xiaobei.arms)             # 输出:2
xiaobei.walk()                  # 输出:直立行走

7、⽅法重写
如果在⼦类中有和⽗类同名的⽅法,则通过⼦类实例去调⽤⽅法时,会调⽤⼦类的⽅法⽽不是⽗类的⽅法,这个特点我们称之为⽅法的重写(覆盖)

当我们调⽤⼀个对象的⽅法时:
会优先去当前对象中寻找是否具有该⽅法,如果有则直接调⽤
如果没有,则去当前对象的⽗类中寻找,如果⽗类中有则直接调⽤⽗类中的⽅法。
如果没有,则去⽗类中的⽗类寻找,以此类推,直到找到object,如果依然没有找到就报错了。

class Human:
  arms = 2
  legs = 2
  hair = '各种颜色的头发'
  def walk(self):
    print('直立行走')
  def speak(self):
    print('说着各式各样的语言')
class Chinese(Human):
  hair = '黑头发'
  skin = '黄皮肤'
  def speak(self):
    print('说汉语')
  def eat(self):
    print('吃米饭')
xiaobei = Chinese()
print(xiaobei.arms)         # 输出:2
print(xiaobei.hair)         # 输出:黑头发
print(xiaobei.skin)         # 输出:黄皮肤
xiaobei.walk()              # 输出:直立行走
xiaobei.speak()             # 输出:说汉语
xiaobei.eat()               # 输出:吃米饭

8、super 函数
super()可以获取当前类的⽗类
并且通过super()返回对象调⽤⽗类⽅法时,不需要传递self

class A:
    def __init__(self):
        print("进入:A")
        print("离开:A")
class B(A):
    def __init__(self):
        print("进入:B")
        super(B, self).__init__()
        print("离开:B")
b = B()
输出结果:
进入:B
进入:A
离开:A
离开:B
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值