python基础学习笔记(五)——类和继承class

  • 类class

面向对象的程序设计中的一种数据结构,内部包括数据(属性)和函数(对属性进行操作)。

面向对象的程序设计三个特性:封装、继承和多态,是基于类和对象的操作。

注意类的定义格式,每个类都包括一个初始化函数(构造函数)来初始化数据。

注意:类中定义的每一个函数都有一个默认参数self(用于封装),且必须为第一个参数.

class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def greet(self):
        print("Hello, my name is %s" % self.name)

a=Person("Peter",20)
b=Person("Anna",19)

a.greet()
print(b.age)
Hello, my name is Peter
19

定义一个矩形类,矩形的位置由对角线两个点确定。

计算矩形的长和宽,面积和周长,显示矩形对角线两个点的位置

注意:__init__()函数为构造函数为对象分配存储空间,__str__()函数返回一个字符串,用于对象的输出。

import math
class Rectangle():
    def __init__(self,coor1,coor2):
        self.coor1x=coor1[0]
        self.coor1y=coor1[1]
        self.coor2x=coor2[0]
        self.coor2y=coor2[1]
    def width(self):
        return math.fabs(self.coor1x-self.coor2x)
    def height(self):
        return math.fabs(self.coor1y-self.coor2y)
    def area(self):
        return math.fabs(self.coor1x-self.coor2x)*math.fabs(self.coor1y-self.coor2y)
    def circumference(self):
        return (math.fabs(self.coor1x-self.coor2x)+math.fabs(self.coor1y-self.coor2y))*2
    def __str__(self):
        ls1=str((self.coor1x,self.coor1y))
        ls2=str((self.coor2x,self.coor2y))
        ls=ls1+ls2
        return ls

a=Rectangle((1,2),(3,4))
print(a.width())
print(a.area())
print(a)
2.0
4.0
(1, 2)(3, 4)
  • 类的继承

子类继承父类的数据和函数,子类生成的对象可以访问父类。访问顺序:先子类,再上溯到父类。

注意子类的定义格式

class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def greet(self):
        print("Hello, my name is %s" % self.name)

class TenYearOldPerson(Person):
    def __init__(self,name):
        super().__init__(name,10)
    def greet(self):
        print("I don't talk to strangers!")

a=TenYearOldPerson("Peter")
a.greet()

b=Person("Mary",19)
b.greet()
I don't talk to strangers!
Hello, my name is Mary

定义一个正方形类,作为矩形的子类,通过调用父类的函数计算面积等。

import math
class Rectangle():
    def __init__(self,coor1,coor2):
        self.coor1x=coor1[0]
        self.coor1y=coor1[1]
        self.coor2x=coor2[0]
        self.coor2y=coor2[1]
    def width(self):
        return math.fabs(self.coor1x-self.coor2x)
    def height(self):
        return math.fabs(self.coor1y-self.coor2y)
    def area(self):
        return math.fabs(self.coor1x-self.coor2x)*math.fabs(self.coor1y-self.coor2y)
    def circumference(self):
        return (math.fabs(self.coor1x-self.coor2x)+math.fabs(self.coor1y-self.coor2y))*2
    def __str__(self):
        ls1=str((self.coor1x,self.coor1y))
        ls2=str((self.coor2x,self.coor2y))
        ls=ls1+ls2
        return ls

class Square(Rectangle):
    def __init__(self,coor1,size):
        coor2=(coor1[0]+size,coor1[1]+size)
        super().__init__(coor1,coor2)
        self.size=size

a=Square((1,1),1)
b=Square((2,2),1)
print(a.area())
print(b.circumference())
print(b)    
1.0
4.0
(2, 2)(3, 3)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值