Python笔记_类的定义

面向对象编程

继承:多继承
类中所有的__开头的方法都是内置的来自于父类

定义类的语法
class类名(父类….)
#定义变量和方法
方法:
实例方法:只能通过实例调用,实例方法第一个参数只能实例本身的引用
类方法:定义类方法要使用装饰器@classmethod,定义的第一个参数只能只能是类对象的引用,可以通过类或者实例直接调用
静态方法:定义静态方法要使用装饰器@staticmethod,没有默认必须参数,可以通过类或者实例直接调用

方法:依赖定义,依赖调用

A
  def foo()
     pass
A().foo()
class person:
    def __init__(self,first_name,last_name):
        self.__first_name=first_name
        self.__last_name=last_name
    def show(self,s): #this  show(s){}
        print(self.__first_name)
        print(self.__last_name)
        print(self.full_name,s)  #print(propterty(full_name),s)
    @property
    def full_name(self):
        return self.__first_name+'.'+self.__last_name
    @full_name.setter
    def full_name(self,full_name):
        self.__first_name=full_name[:full_name.index(".")]
        self.__last_name=full_name[full_name.index(".")+1:]

p=person("wang","wu")
p.show("haha")
print(p.full_name)
p.full_name="li.si 
p.show("heihei")

实例方法实例:

class Myclass:
    def foo(self):
        print(id(self))
a = Myclass()  #创建本身
print(id(a))
a.foo()

类方法实例:

class Myclass:
    def foo(self):
        print(id(self))
a = Myclass()  #创建本身
b = Myclass()  #有创建了一个新的实例
print(id(a))
a.foo()
Myclass.foo()  这是错误的,不能被调用,因为foo()是实例方法

静态方法实例:

class Myclass:
    def foo(self):
        print(id(self))
    @classmethod
    # def foo2(self):
    #     print(id(self))
    def foo2(cls):
        print(id(cls))
    @staticmethod
    def foo3():
        print('foo3')
a = Myclass()  #创建本身
b = Myclass()  #有创建了一个新的实例
print(id(a))
a.foo()
print(id(Myclass))
Myclass.foo2()
a.foo2()
a.foo()
Myclass.foo3()

私有的类方法
__private_method 两个下划线开头,声明该方法为私有方法,不能在类地外部调用
在类的内部调用slef.__private_methods
类的专有方法:
_ init _ 构造函数,在生成对象时调用
_ del_ 析构函数,释放对象时使用
_ repr_ 打印,转换
_ setitem_按照索引赋值
_ getitem_按照索引获取值
_ len_获得长度
_ cmp_比较运算
_ call_函数调用

_ add_加运算
_ sub_减运算
_ mul_乘运算
_ div_除运算
_ mod_求余运算
_ pow_称方

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值