python 类与对象

关于python中类与方法的创建在格式上是和java类似的我们可以对应着那个来学这个。

构造函数和析构函数:

class Car:
    def __init__(self, number):
        print("My number is {}".format(number))
    def __del__(self):
        print("I am destroyed!")

Car("23333")

 运行结果:

解释:和java中一样,在自定义一个类之前都是用class关键字来声明一个类,在Python中初始化和析构函数有固定的函数名:"_init_" 和 "_del_ ", 而且二者的第一个参数都应该是一个指向实例本身的self参数,后边可以加我们需要的参数,在这里self参数是不需要人为传入的,Python会在调用实例方法的时候自动传入self参数。self是用来干嘛的?self参数是调用这个实例方法的实例本身的引用,即哪个对象调用了带有self参数的方法,self就会指代谁。

类的属性:

class Car:
    count = 0
    def __init__(self, number):
        Car.count += 1
        self.number = number
        print("My number is {}".format(number))

    def __del__(self):
        self.__class__.count -= 1
        print("I am destroyed! My number is {}".format(self.number))

print(Car.count)
a1 = Car("1122")
print(Car.count)
a2 = Car("2233")
print(Car.count)

运行结果:

 

 解释:在Python中属性分为两种:类属性和实例属性;区别:“类属性”在该类及其所有的实例中是共享的;而“实例属性”在实例之间不共享,每个实例都拥有一个属于实例本身的“实例属性”,在上边的这段程序中count就相当于类属性,number相当于实例属性,其中无论实在类外还是类内,通过“类名.类属性名”即可使用这个类的类属性,但是唯独在析构函数中不可以这么用,在析构函数中我们需要通过“self._class_.类属性名”的方式来访问类属性。

“self.number=number” :使用初始化函数的参数number的值为实例属性number初始化,这样我们就可在析构的时候再次输出它了。

类的方法(方法”就是指在类中定义的函数)

Python中类分为三种:“实例方法”,“静态方法”,“类方法”

实例方法:

“实例方法”是类的实例所特有的方法,实例方法只能通过实例的引用进行调用,并且在实例方法中可以通过self参数直接访问调用该方法的实例本身,上边有用到。

静态方法:

“静态方法”既可以通过各类名进行调用,也可以通过实例的引用进行调用。在Python中,静态方法在声明时需要使用修饰器“@staticmethod”修饰,就是在函数声明的上一行中添加修饰器;同时,“静态方法”中不需要传入self参数,因此我们无法直接获取调用静态方法的对象的引用。

class cal:
    @staticmethod
    def add(x, y):
        return x+y
print(cal.add(1,2))

运行结果:

 

类方法:

“类方法”也是既可以通过类名进行调用,也可以通过实例的引用进行调用。并且类方法需要传入一个参数(常命名为“cls”)作为调用该方法的类的引用,类似于类方法中的self,所以在这点上来看,类方法更像是实例方法,只不过它关注的不是调用该方法的对象而是类。Python中类方法需要使用修饰器“@classmethod”进行修饰。

class C:
    name = "Say"
    @classmethod
    def foo(cls, content):
        print("{} {}".format(cls.name, content))
C.foo("Hi!")
c = C()
c.foo("Bye!")

运行结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值