Tutorial básico do Starfruit Python-capítulo 8: Classes e objetos Python (6) Métodos de classe, atributos de classe, métodos estáticos

Minha coluna do blog do CSDN: https://blog.csdn.net/yty_7
Endereço do Github: https://github.com/yot777/Python-Primary-Learning

 

8.6 Métodos de classe e métodos de instância

Após anteriormente neste capítulo, estamos todos definir uma classe, instanciar um objeto desta classe, ir para a chamada de método de classe é chamado um método de instância .

De fato, existem métodos que uma classe pode chamar diretamente sem instanciar um objeto, chamado de método de classe .

Os métodos de classe precisam ser decorados com @classmethod

Instâncias podem chamar métodos de instância e métodos de classe, mas classes só podem chamar métodos de classe.

 

Exemplos de métodos de classe Python :

class Animal():
#实例方法
  def __init__(self):      #实例方法的默认参数是self
    #实例属性
    self.name="小花"
  def test1(self):
    print(self.name)
  #类方法需要加上装饰器
  @classmethod         
  def test2(cls):           #类方法的默认参数是cls
    cls.num=100
    print(cls.num)

cat=Animal()               #Animal类的实例化对象cat
cat.test1()                   #实例可以调用实例方法test1
#Animal.test1()           #类不能调用实例方法test1
cat.test2()                   #实例可以调用类方法test2
Animal.test2()             #类可以调用类方法test2

运行结果:
小花
100
100

8.7 Atributos de classe e atributos de instância

Os atributos definidos na classe são colocados no construtor def __init __ () , chamado de atributos de instância .

Colocado fora do construtor, é chamado de atributo de classe .

Instâncias podem acessar atributos de instância e atributos de classe, mas classes podem acessar apenas atributos de classe.

Os atributos de classe têm um recurso importante: eles podem ser compartilhados entre diferentes objetos de instância , o que é semelhante às variáveis ​​globais em Java .

 

Exemplos de atributos de classe Python :

class Person():
  #类属性
  num=0
  def __init__(self,name):
    self.name=name
    n=0
    n+=1               #实例属性每次调用会从初始的值开始
    Person.num+=1      #类属性每次调用会保留上次调用的值,类属性的调用要加类名
    print("name=",name)
    print("n=",n)
    print("Person.num=",Person.num) 

a=Person("小明")
b=Person("小陈")
c=Person("小李") 

运行结果:
name= 小明
n= 1
Person.num= 1
name= 小陈
n= 1
Person.num= 2
name= 小李
n= 1
Person.num= 3

Exemplos de variáveis ​​globais do Java :

//Person类
public class Person {
  public static int num=0;
  public String name;
  public int n;

  public void Person(String name) {
    this.name = name;
    n=0;
    n=n+1;
    num=num+1;
    System.out.println("name="+this.name);
    System.out.println("n="+n);
    System.out.println("Person.num="+num);
  }
}

//PersonTest类
public class PersonTest {
  public static void main(String[] args) {
    Person a = new Person();
    a.Person("小明");
    Person b = new Person();
    b.Person("小陈");
    Person c = new Person();
    c.Person("小李");
  }
}

运行结果:
name=小明
n=1
Person.num=1
name=小陈
n=1
Person.num=2
name=小李
n=1
Person.num=3

8.8 Métodos estáticos

Métodos estáticos são funções em classes e nenhuma instância é necessária.

Os métodos estáticos são usados ​​principalmente para armazenar código lógico, que pertence à classe logicamente, mas não tem nada a ver com a própria classe, ou seja, no método estático, ele não envolve as propriedades e operações do método na classe. Métodos estáticos não podem chamar propriedades e métodos na classe.

Os métodos estáticos precisam adicionar o decorador @staticmethod

 

Exemplos de métodos estáticos do Python :

import time

class TimeTest():
  def __init__(self, hour, minute, second):
    self.hour = hour
    self.minute = minute
    self.second = second

  #普通方法
  def showTime(self):
    print('%s:%s:%s' %(self.hour,self.minute,self.second))

  #静态方法需要加上装饰器
  @staticmethod
  def showCurrentTime():
    return time.strftime("%H:%M:%S", time.localtime())

t = TimeTest(22, 15, 10)
t.showTime()
print(TimeTest.showCurrentTime())

运行结果:
22:15:10
16:01:21

Tutorial de referência:

Tutorial de Liao Xuefeng em Python

https://www.liaoxuefeng.com/wiki/1016959663602400

Tutorial de Java de Liao Xuefeng

https://www.liaoxuefeng.com/wiki/1252599548343744

Tutorial do Python3 | Tutorial para iniciantes
https://www.runoob.com/python3/
 

Se você acha que este capítulo é útil para você, seja bem-vindo a seguir, comentar e curtir! O Github recebe seu Follow e Star!
 

Publicado 55 artigos originais · ganhou elogios 16 · vista 6111

Acho que você gosta

Origin blog.csdn.net/yty_7/article/details/104225915
Recomendado
Clasificación