class类的使用

Python中使用class关键字来定义类,类要遵循下述格式(模板)

class 类名:
    def __init__(self,参数,...):#构造函数

    def 方法名1(self,参数,...)#方法一

    def 方法名2(self,参数,...)#方法二

其中构造函数,只能在类实例时被调用一次。

在方法的第一个参数中明确地写入表示自身(自身的实例)的self是Python的一个特点。

下面我们通过一个简单例子来创建一个类:

class Man:
    def __init__(self, name):
        self.name = name
        print("初始化!")

    def first(self):
        print("hello" + self.name + "!")

    def second(self):
        print("Good" + self.name + "!")


m = Man("BJ")
m.first()
m.second()

运行结果:

初始化!
helloBJ!
GoodBJ!

我们定义了一个Man类,通过对Man类进行实例(对象)m。

我们在Man中传入了参数name=“BJ”,这个参数初始化实例变量self.name。(实例变量:存储在各个实例中的变量)。

Man中的其他方法可以通过self.name来调用。

我们还可以在构造函数中添加其他的参数,在方法中通过self.属性名来生成或者访问实例变量。

扩展内容

1.访问权限:

  • _foo_:定义的是特殊方法,一般是系统定义名字,如_init_()。
  • _foo :以单下划线开头是表示的是protected类型的变量,即保护类型只能允许其本身与子类访问,不能用于from module import*
  • __foo:以双下划线开头时,表示的是私有类型(private)的变量,即只允许这个类本身进行访问。

2.类的继承

  • 在继承中基类的初始化方法_init_()不会被自动调用,它需要在其派生类的构造中亲自专门调用。
  • 在调用基类的方法时,需要使用super()前缀
  • Python总是首先查找对应类型的方法,不能在派生类中找到对应方法时,它才开始到基类中进行查找(先在本类中查找调用的方法,找不到才去基类中找)

下面我们通过一段代码来理解:

# Author:北京
# QQ:838262020
# time:2021/3/31
class Person:
    visited = 0

    def __init__(self, name, age, height):
        # 私有成员
        self.__name = name
        # 保护成员
        self._age = age
        # 公有成员
        self.height = height

    def getName(self):
        return self.__name

    def getAge(self):
        return self._age

    def showInfo(self):
        print("name:", self.__name)
        print("age:", self._age)
        print("height:", self.height)
        print("visited:", self.visited)
        Person.visited = Person.visited + 1


class Teacher(Person):

    def __init__(self, name, age, height):
        super().__init__(name, age, height)
        self.__title = None

    def getTitle(self):
        return self.__title

    def setTitle(self, title):
        self.__title = title

    def showInfo(self):
        print("title:", self.__title)
        super().showInfo()


def TestPerson():
    BJ = Person("Bj", 20, 1.83)
    BJ.showInfo()
    print('----------------------')

    bj = Teacher('bj', 40, 1.79)
    bj.setTitle("教授")
    bj.showInfo()

TestPerson()

运行结果:

name: Bj
age: 20
height: 1.83
visited: 0
----------------------
title: 教授
name: bj
age: 40
height: 1.79
visited: 1

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值