Python学习 我帮你介绍个对象吧!

面向对象技术简介

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外
  • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其重写,将父类方法覆盖
  • 实例变量:定义在方法中的变量,只作用于当前实例的类
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法
  • 实例化:创建一个类的实例,类的具体对象
  • 方法:类中定义的函数
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法
    总结:面向对象技术在其他的语言中都基本上是差不多的,只是在语法结构上会有点偏差

类定义的格式

class ClassName:
    <statement-1>
    .
    .
    .
    <statement-N>

实例演示

#简单的创建一个Person类,定义4个成员变量,和一个方法输出数据
>>> class Person:
    age = 20
    sex = "female"
    height = 165
    weight = 48.0
    def printPersonData(self):
        print("Age:",self.age,"Sex:",self.sex)


>>> x = Person()   #实例一个成员变量
>>> x.printPersonData()
Age: 20 Sex: female
>>> 
#带构造函数的类,初始化是必须给定值
>>> class Person2:
def __init__(self,age,sex):
        self.age = age
        self.sex = sex


>>> person = Person2(10,"male")
>>> print("Age:",person.age,"Sex:",person.sex)
Age: 10 Sex: male

类方法

在类地内部,使用 def 关键字来定义一个方法,第一个参数必须包含self,self代表的是类的实例

>>> class Animal:
    name = "xiaohu"
    age = 2
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def printAnimalMessage(self):
        print(self.name, "already", self.age,"years old" )


>>> dog = Animal("xiaohuang", 8)
>>> dog.printAnimalMessage()
xiaohuang already 8 years old
>>> 

继承和重写

#简单的继承和多继承    代码只是示例,目的是实现原理,这里可以在父类的中写个构造函数,然后在子类中重写构造函数,然后在子类的构造函数中调用父类的构造函数,这样又可以抽象化,这里就不演示了
>>> class Person:
    age = 20
    sex = "female"
    height = 165
    hipline = 80
    def printPersonData(self):
        print("Age:",self.age,"Sex:",self.sex)

>>> class Dancer:
    signature = "i'm a dancer"

>>> class Singer:
    signature = "i'm a singer"

>>> class Female1(Person,Dancer):
    name = ""
    def __init__(self, name, age, sex, height,hipline):
        self.name = name
        self.age = age
        self.sex = sex
        self.height = height
        self.hipline = hipline
    def printMessage(self):
        print("name:",self.name,"Sex:",self.sex,"height:",self.height,"Hipline:",self.hipline, "signature:",self.signature)

>>> class Female2(Person,Singer):
    name = ""
    def __init__(self, name, age, sex, height,hipline):
        self.name = name
        self.age = age
        self.sex = sex
        self.height = height
        self.hipline = hipline
    def printMessage(self):
        print("name:",self.name,"Sex:",self.sex,"height:",self.height,"Hipline:",self.hipline, "signature:",self.signature)


>>> female1 = Female1("xiaoli",20,"Female",165,90)
>>> female1.printMessage()
name: xiaoli Sex: Female height: 165 Hipline: 90 signature: i'm a dancer
>>> female2 = Female2("xiaoyun",20,"Female",165,90)
>>> female2.printMessage()
name: xiaoyun Sex: Female height: 165 Hipline: 90 signature: i'm a singer
>>> 

类的私有方法和变量

  1. __private_attrs:两个下划线开头,声明该属性为私有
  2. __private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用
 >>> class Person:
    __age = 20   #私有变量
    sex = "female"
    height = 165
    hipline = 80
    def __printData(self):    #私有方法
        print("Age:",self.__age,"Sex:",self.sex)
    def pintPersonData(self):
        self.__printData()


>>> person = Person()
>>> person.__age  #调取私有变量报错
Traceback (most recent call  last):
  File "<pyshell#187>", line 1, in <module>
    person.__age
AttributeError: 'Person' object has no attribute '__age'
>>> person.pintPersonData()
Age: 20 Sex: female
>>> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值