python类与方法

函数

# 定义函数
def printme( str ):
   
   print (str);
   return;
 
# 调用函数
printme("我要调用用户自定义函数!");
printme("再次调用同一函数");

类的优点:

1、类对象是多态的:也就是多种形态,这意味着我们可以对不同的类对象使用同样的操作方法,而不需要额外写代码。
2、类的封装:封装之后,可以直接调用类的对象,来操作内部的一些类方法,不需要让使用者看到代码工作的细节。
3、类的继承:类可以从其它类或者元类中继承它们的方法,直接使用。

类的定义

1、定义类

class Test:
	def name(self,name):
		self.name = name

一第行,语法是class 后面紧接着,类的名字,最后别忘记“冒号”,这样来定义一个类。
类的名字,首字母,有一个不可文的规定,最好是大写,这样需要在代码中识别区分每个类。
第二行开始是类的方法,大家看到了,和函数非常相似,但是与普通函数不同的是,它的内部有一个“self”,参数,它的作用是对于对象自身的引用。

2、初始化对象

创建类时,可以定义一个特定的方法,名为__init__(),只要创建这个类的一个实例就会运行这个方法。可以向__init__()方法传递参数,这样创建对象时就可以把属性设置为你希望的值__init__()这个方法会在创建对象时完成初始化
class People:
	def __init__(self,name,age,sex):  
		self.Name = name
		self.Age = age;
		self.Sex = sex;
	def speak(self):
		print ("my name"+self.Name)

peo_1 = People("haha",24,"man")
print(peo_1.Name)
print(peo_1.Age)
print("\n")
peo_2 = People("hehe",20,"girl")
print(peo_2.Name)
print(peo_2.Age)

之前多次用到self这个形参类就好比是一张蓝图,使用一个类可以创建多个对象实例,speak()方法在被调用时,必须知道是哪个对象调用了它.

这里self参数就会告诉方法是哪个对象来调用的.这称为实例引用。

3、类的私有属性

  __private_attrs 两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs

4、静态方法

也可以没有self,即静态方法,@staticmethod是指类中无需实例参与即可调用的方法(不需要self参数),在调用过程中,无需将类实例化,直接在类之后使用.号运算符调用方法。

class ClassA(object):

    @staticmethod
    def func_a():
        print('Hello Python')


ClassA.func_a() #直接调用
  
ca = ClassA()  #对象引用
ca.func_a()

5、classmethod   (类方法)

 在python中.类方法 @classmethod 是一个函数修饰符,它表示接下来的是一个类方法,而对于平常我们见到的则叫做实例方法。 类方法的第一个参数cls,而实例方法的第一个参数是self,表示该类的一个实例。

class ClassA(object):

    @classmethod
    def func_a(cls):
        print(type(cls), cls)


if __name__ == '__main__':

    ClassA.func_a()

    ca = ClassA()
    ca.func_a()

这里还需要注意,如果存在类的继承,那类方法获取的类是类树上最底层的类。

class BaseA(object):

    @classmethod
    def func_a(cls):
        print(type(cls), cls)


class BaseB(object):
    pass


class ClassA(BaseA, BaseB):
    pass


ClassA.func_a()

6、实例方法.

除静态方法与类方法外,类的其他方法都属于实例方法。实例方法需要将类实例化后调用,如果使用类直接调用实例方法,需要显式地将实例作为参数传入。最左侧传入的参数self,是实例本身。

class ClassA(object):

    def func_a(self):   #只有一个参数是self,没有别的参数,调用函数的时候直接调用print方法

    # 使用实例调用实例方法
ca = ClassA()
ca.func_a()
    # 如果使用类直接调用实例方法,需要显式地将实例作为参数传入
ClassA.func_a(ca)

继承类定义

单继承

class Person(object):   # 定义一个父类
 
    def talk(self):    # 父类中的方法
        print("person is talking....")  
 
 
class Chinese(Person):    # 定义一个子类, 继承Person类
 
    def walk(self):      # 在子类中定义其自身的方法
        print('is walking...')
 
c = Chinese()
c.talk()      # 调用继承的Person类的方法
c.walk()     # 调用本身的方法

子类对父类方法的重写  与  构造函数的继承

class Person(object):
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.weight = 'weight'
 
    def talk(self):
        print("person is talking....")
 
class Chinese(Person):
 
    def __init__(self, name, age, language): 
        Person.__init__(self, name, age) #super(Chinese,self).__init__(name,age)
        self.language = language
        print(self.name, self.age, self.weight, self.language)
 
    def talk(self):  # 子类 重构方法
        print('%s is speaking chinese' % self.name)
 
    
c = Chinese('bigberg', 22, 'Chinese')
c.talk()

还可以多重继承

class sample(speaker,student):

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值