Python快速入门——面向对象(下)

A、封装

把属性定义为私有,即在属性前面添加两个下划线。例如:__smcs

B、继承

1、单继承

语法:class 子类名(父类名)
如果类中没有明确标注父类的时候,默认继承Object
父类的私有方法和私有属性不会被继承,更不能被子类访问

class Animal:           # 父类
    def __init__(self,color):
        self.color = color

class Cat(Animal):      # Cat继承Animal类
    pass

cat = Cat('白色')
print(cat.color)

2、多继承

语法:class 子类名(父类名1, 父类名2...)

class A:
    def a(self):
        print('a')
class B:
    def b(self):
        print('b')

class C(A, B):  # 多继承
    pass

c = C()
c.a()
c.b()

3、重写父类方法

class A:
    def a(self):
        print('a')
class C(A):
    def a(self):    # 重写父类方法
        print('c')

c = C()
c.a()

4、调用父类方法

class A:
    def a(self):
        print('a')
class C(A):  # 多继承
    def a(self):    # 重写父类方法
        super().a() # 调用父类方法

c = C()
c.a()

C、多态

class Animal:
    def eat(self):
        print("动物——吃")
class Cat(Animal):
    def eat(self):
        print("猫——吃")
class Dog(Animal):
    def eat(self):
        print("狗——吃")

def func(tmep):
    tmep.eat()

dog = Dog()
cat = Cat()
func(dog)
func(cat)

D、类属性和实例属性

实例属性:实例.属性
类属性:属性 = 值
类属性写在类里面,方法的外面
它被所有类实例的对象所共有
类属性:

class A:
    name = '三木成森'   # 类属性

实例属性:

def __init__(self):
    self.name = '三木成森'  # 实例属性

公有的类属性,可以通过类名和实例对象访问

class A:
    name = '三木成森'
    def __init__(self, age):
        self.age = age  # 实例属性

a = A(20)
print(A.name)   # 类名访问类属性
print(a.name)   # 对象访问类属性

通常使用类名访问类属性

E、类方法和静态方法

在Python中,类方法和静态方法都属于类的方法。

1、类方法

语法:

class 类名:
	@classmethod
	def 类方法名(cls):
		方法体

可以用@classmethod修饰符来标识类方法
类方法的第一个参数为cls,代表定义类方法的类,可以通过cls访问类的属性。可以通过对象调用也可以使用类名调用,这两种方式没有任何区别。
类方法:

class Test:
    number = 0
    @classmethod
    def set_Number(cls, number):
        cls.number = number

test = Test()
print(test.number)
Test.set_Number(520)
print(test.number)

运行结果:

0
520

2、静态方法

使用@staticmethod标识的方法

class 类名:
	@staticmethod
	def 静态方法():
		方法体

静态方法没有任何参数,由于没有self参数,所以不能访问类的实例属性;静态方法也没有cls参数所以也无法访问属性。静态方法跟它的类没有直接关系,只是起到类似于函数的作用。

class Test:
    number = 0
    @staticmethod
    def static():
        print('三木成森:静态方法')

test = Test()
test.static()
Test.static()

运行结果:

三木成森:静态方法
三木成森:静态方法

注意:使用类名不能访问实例属性或实例方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值