Python 类学习笔记

_ _init _ _

创建class

class Dog:
    def __init__(self,name,breed,age):
        self.name=name
        self.breed=breed
        self.age=age
a_dog=Dog("abc","hound",3)
print(a_dog.age,a_dog.breed,a_dog.name)

在类中定义函数

class Dog:
    def __init__(self,name,breed,age):
        self.name=name
        self.breed=breed
        self.age=age
    def age_promote(self):
        self.age+=1
a_dog=Dog("abc","hound",3)
print(a_dog.age,a_dog.breed,a_dog.name)
a_dog.age_promote()
print(a_dog.age)

_ _str _ _

def __str__(self):
    """返回一个对象的描述信息"""
    # print(num)
    return "名字是:%s , 年龄是:%d" % (self.name, self.age)

变长参数列表

语法

def function_name(fixed_arg,*args):
    statements

arg可以是元组或列表

*的意思是变长参数列表,即参数可能不确定

eg1:

class Dog:
    def __init__(self,name,breed,age,*arg):
        self.name=name
        self.breed=breed
        self.age=age
        self.list=arg
    def age_promote(self):
        self.age+=1
    def print_arg(self):
        for i in self.list:
            print(i)
a_dog=Dog("abc","hound",3,1,2,3)
a_dog.print_arg()

输出1 2 3

eg2:

class Dog:
    def __init__(self,name,breed,age,*arg):
        self.name=name
        self.breed=breed
        self.age=age
        self.list=arg
    def age_promote(self):
        self.age+=1
    def print_arg(self):
        for i in self.list:
            print(i)
a_dog=Dog("abc","hound",3,[1,2,3])
a_dog.print_arg()

输出[1,2,3]

eg3:

class Dog:
    def __init__(self,name,breed,age,*arg):
        self.name=name
        self.breed=breed
        self.age=age
        self.list=arg
    def age_promote(self):
        self.age+=1
    def print_arg(self):
        for i in self.list:
            print(i)
a_dog=Dog("abc","hound",3,*[1,2,3])
a_dog.print_arg()

输出1 2 3(同eg1)

继承

一个类继承另一个类时,继承者是子类,被继承者是父类

class class_name(base_class):
    class_definition

eg1:

class Dog:
    def __init__(self,name,breed,age,*arg):
        self.name=name
        self.breed=breed
        self.age=age
        self.list=arg
    def age_promote(self):
        self.age+=1
    def print_arg(self):
        for i in self.list:
            print(i)
class cat(Dog):
    def play(self):
        s=''
        while not s or s[0] in 'Nn':
            print(self.name,'fetches the balls!')
            s=input('wanna play again?(Y/N)')
class puppy(cat):
    def __init__(self,name,breed,age,sitdown):
        cat.__init__(self,name,breed,age)
        self.sitdown=0
    def sit(self):
        if (self.sitdown==0):
            print("I am sitting down!")
            self.sitdown=1
        else:
            print("i am stand up")
            self.sitdown=0
a_dog=Dog("abc","hound",3,*[1,2,3])
a_dog.print_arg()
pu=puppy("abc","hound",3,0)
pu.sit()
pu.sit()
a_cat=cat("abc","hound",3,*[1,2,3])
a_cat.play()

cat 和puppy就是dog的子类

在python中都有子类自动继承超类的方法,继承可以是直接的也可以是间接的,在这里puppy直接继承了cat类的所有方法,还继承了祖父类dog的所有属性

子类继承了父类的所有方法,其中包括init ,因此不是在所有时候都要重新编写init方法

但也可以像上面puppy类这么写

类变量和类方法

类变量是由同一个类的所有成员共享的变量

eg1:

class Dog:
    num_dogs=0;
    def __init__(self,name,breed,age):
        self.name=name
        self.breed=breed
        self.age=age
        Dog.num_dogs+=1
a_dog=Dog("first_dog",'ww',3)
print("dog_num: ",Dog.num_dogs)
another_dog=Dog("second_dog","ee",3)
print("Now_dog_num :",Dog.num_dogs)

输出

dog_num:  1
Now_dog_num : 2

实例变量

在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的

class Address:
    detail = "guangzhou"
    post_code = "510660"
    def info(self):
        #尝试直接访问类变量
        #print(detail) #报错
​
        #通过类类访问类变量
        print(Address.detail)
        print(Address.post_code)
​
#通过类来访问Address 类的类变量
print(Address.detail)
addr = Address()
addr.info()
#修改Address类的类变量
Address.detail = "fushan"
​
Address.post_code = "460110"
addr.info()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值