Python之类和对象

本文详细介绍了Python的面向对象编程,包括类的定义、实例化、属性和方法。通过Person类和CLanguage类的实例,阐述了如何创建类、定义实例变量和方法,以及如何使用类对象。同时,讲解了类变量、实例变量、静态属性和内部类的使用,展示了动态添加和删除实例变量的方法。
摘要由CSDN通过智能技术生成

class 类名:
…执行语句…
…零个到多个类变量…
…零个到多个方法…

变量和方法介绍

1.变量
类变量用于定义该类本身所包含的状态数据;实例变量属于该类的对象,用于定义对象所包含的状态数据;
2.方法用于定义该类的对象的行为或功能的实现

  • 定义实例方法与定义函数基本同,实例放的第一个参数会被绑定到方法的调用者,因此实例方法至少定义一个参数,该参数会被命名为self
  • _init_构造法:用于构造该类的对象,是类创建对象的根本途径

定义一个Person类

class Person:      #定义一个类
    #定义一个类变量
    hair = 'black'
    def _init_(self,name = 'Liu',age = 24):  #类的构造函数,用于初始化类的内部状态,为类的属性设置默认值
        #为Person对象增加两个实例变量
        self.name = name  #定义name属性
        self.age = age  #定义age属性
    #定义一个say方法
    def say(self,content):#定义类的函数,称为方法,它至少有一个参数self
        print(content)

代码解读:Person类中定义了一个构造方法_init_,第一个参数为self,被绑定到构造方法中作为初始化对象

类的实例化

创建对象的过程称为实例化,当一个对象被创建后,它包含3个属性:对象的句柄(用于区分不同的对象)、属性和方法

类名(参数)
没有手动添加_init_()构造方法,或者构造方法仅有一个self参数时,创建类对象时参数可以省略不写

class CLanguage:
    #定义两个类变量
    name = 'c语言中文网'
    add = 'http://'
    def _init_(self,name,add):
        #定义2个实例变量
        self.name = name
        self.add = add
        print(name,'网址为:',add)
    #定义一个say实例方法
    def say(self,content):
        print(content)

#将该CLanguage对象赋给clanguage变量
clanguage = CLanguage('C语言中文网','http://')

代码解读:除self参数外,还包含两个没有设置默认的值参数,因此在实例化类对象时,还需传入相应的name和add值

定义在各个类方法之外(包含在类中)的变量为类变量(或类属性);定义在类方法中的变量为实例变量

类的属性和方法

1.类的属性
实例属性:以self为前缀的属性,没有使用self为前缀声明,则该变量只是普通的局部变量,类中其他方法定义的变量也是局部变量,而非类的实例属性。
静态属性:

class Fruit:        
    price = 0                      #定义一个类属性
    def __init__(self):            #构造函数
        self.color = "red"         #实例属性,以self为前缀
        zone = "China"             #局部变量,不以self为前缀
if __name__ == "__main__":
    print(Fruit.price)            #使用类名调用类变量
    apple = Fruit()               #实例化apple
    print(apple.color)            #打印apple实例的颜色
    Fruit.price = Fruit.price + 10#将类变量+10
    print("apple's price:" + str(apple.price))#打印apple实例的price
    banana = Fruit()                 #实例化banana
    print("banana's price:" + str(banana.price))  #打印banana实例的price
# 0
# red
# apple's price:10
# banana's price:10

2.内部类的使用
内部类的方法有两种方法调用

  • 直接使用外部类调用内部类,生成内部类的实例,在调用内部类的方法
object_name = outclass_name.inclass_name()
object_name.method()
  • 先对外部类进行实例化,然后在实例化内部类,最后调用内部类的方法
out_name = outclass_name()
in_name = out_name.inclass_name()
in_name.method()

类对象的使用

1.类对象访问变量或方法
访问类中实例变量

类对象名.变量名

调用类中方法

对象名.方法名(参数)

#输出name和add实例变量的值
print(clanguage.name,clanguage.add)
#修改实例变量的值
clanguage.name = 'Python'
clanguage.add = 'http://'
#调用clanguage的say()方法
clanguage.say('天道酬勤')
print(clanguage.name,clanguage.add)

# c语言中文网 http://
# 天道酬勤
# Python http://

2.给类对象动态添加/删除变量

#为clanguage对象增加一个money实例变量
clanguage.money = 11
print(clanguage.money)
#11
#删除新添加的money实例变量
del clanguage.money
#再次尝试输出money,此时会报错
print(clanguage.money)

3.给类对象动态添加方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值