Python之路——类

Python中的类,其实和Java中差不多,有很多相通之处,今天试着换一种方式,先上代码,再说理论。

class Dog():
  """一次模拟小狗的简单尝试"""
  def __init__(self,name,age):
    """初始化属性name和age"""
    self.name = name
    self.age = age
    self.color = "red"
	
  def sit(self):
    """模拟小狗被命令时蹲下"""
    print(self.name.title()+" is now sitting.")
  
  def roll_over(self):
    """模拟小狗被命令时打滚"""
    print(self.name.title()+" rolled over.")
  
  def setColor(self,color):
    """设定小狗颜色"""
    self.color = color  

myDog = Dog("hua",10)#创建Dog类实例
print(myDog.name)#打印对象名字
print(str(myDog.age))#打印对象年龄
myDog.sit()#调用类中sit方法
myDog.roll_over()#调用类中roll_over方法
print(myDog.color)#打印初始值,输出red
myDog.color = "blue"#直接修改初始值
print(myDog.color)#打印修改后的值,输出blue
myDog.setColor("black")#通过方法修改初始值
print(myDog.color)#打印修改后的值,输出black

这是我看的书的例子,书名是《Python编程——从入门到实践》,推荐给大家,如果我的博客有侵权的话,请大家告知,我会删掉,不过不用于商业用途应该没关系吧。

好了,开始分析代码:

  • 定义类的关键字和Java一样:class
  • 类的命名规则:首字母大写
    • 后面跟冒号,冒号后面的代码是类中内容,注意缩进;
    • 注意编写习惯,三引号代表文档注释;
  • 初始化方法:__init__(self,name,age)
    • 注意:init前后都是两个下划线,写成一个会报这个错:TypeError: object() takes no parameters;
    • 加下划线的目的是为了避免Python默认方法与普通方法发生名称冲突;
    • 第一个形参self:用于接收Python调用_ _init _ _()方法创建实例时传入的实参self(都是引用),后面的参数是类里面的属性,self有些类似于Java里的this ;
    • 后面的形参:类似于Java类中的属性,也就是成员变量,初始化方法类似Java中构造方法;
    • self.name = name,将传入参数的值赋给初始化方法定义的变量或者叫属性,方便后面使用;
    • self.color = red,没有在init方法括号内定义该变量,而是在方法内,是为了给该变量赋初始值,无需用户传入参数;
  • 实例的创建和使用:
    • 创建:实例(对象)名 = 类名(属性值,属性值)
      • 注意:1.self不用传;2.属性值传入按顺序
    • 使用:
      • 获取属性:实例名.属性名
      • 调用方法:实例名.方法名(有参传参,无参空着)

Python中的继承

#泰迪继承了狗类
class TaiDi(Dog):
  """泰迪"""
  def __init__(self,name,age):
    """初始化父类的属性"""
    super().__init__(name,age)
    self.dogType = "small"    
  def run(self):
    """模拟泰迪奔跑"""
    print(self.name+"is running")
  def sit(self):
    """模拟小狗被命令时蹲下"""
    print(self.name.title()+" don't sitting.")
#创建泰迪对象	
myTaiDi = TaiDi("doudou",3)
#获取子类特有属性
print(myTaiDi.dogType)#输出small
#调用父类方法
myTaiDi.roll_over()#输出Doudou rolled over.
#调用重写方法
myTaiDi.sit()#输出Doudou don't sitting.
  • 继承哪个类,定义类是括号里写哪个类的名称;
    • 注意:创建子类时,父类必须包含在当前文件中且位于子类前面;
  • 方法__init__()需要接收创建父类实例所需的信息:就是父类self后面的参数,子类后面也都要有,还要一样;
  • super()方法:关联父类和子类;
  • 给子类定义新属性并设置默认值和之前一样;
  • 子类可以调用父类中的方法
  • 子类可以重写父类中的方法
    • 重写:函数名和传入参数完全一致
    • 子类实例调用时调用子类重写后的方法

关于Python中的类就说这么多,如有错漏之处请大家批评指正。

猜你喜欢

转载自blog.csdn.net/weixin_43622082/article/details/86653899