python class 学习(一)

在Python中,定义一个类(class)通常包括以下几个部分:

  1. 类名:类的名称,通常以大写字母开头,用于区分与其他类型的变量或函数。
  2. 初始化方法(__init__:这是一个特殊的方法,当创建类的新实例时会自动调用。它用于初始化对象的属性。
  3. 类属性:这些是在类级别定义的属性,可以被类的所有实例共享。
  4. 实例方法:这些方法定义在类中,用于操作类的实例。它们至少需要一个参数,通常命名为self,它引用实例本身。
  5. 类方法:使用@classmethod装饰器定义的方法,它们接收类本身作为第一个参数,通常命名为cls
  6. 静态方法:使用@staticmethod装饰器定义的方法,它们不接收特殊的第一个参数。
  7. 特殊方法(Magic Methods):如__str____repr____eq__等,这些方法允许类定义其行为,例如如何打印对象、比较对象等。
  8. 对象:

以下是一个简单的Python类示例,包含上述各个部分:

class MyClass:  
    # 类属性  :定义在类当中 方法外的变量
    class_attribute = "I am a class attribute"  
    #初始化方法  必须两个_开始和结束
    def __init__(self, xd, age):  #xd age是方法的参数,是局部变量,只能在__init__使用
        # 实例属性    
        self.name = xd  #xd是局部变量,name是实例属性,将局部变量赋值给实例属性
        self.age = age   #局部变量和实例属性可以名字相同
  
    def greet(self):  
        # 实例方法  定义在类中函数 且自带self
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")  
  
    @classmethod  
    def class_method(cls):  
        # 类方法  cls是自带的,class缩写 不能调用实例方法和实例属性
        print(f"This is a class method of {cls.__name__}")  
  
    @staticmethod  
    def static_method():  
        # 静态方法  不能调用实例方法和实例属性
        # print(my_instance.name)
        # my_instance.greet()
        print("This is a static method")  
  
    def __str__(self):  
        # 特殊方法:返回对象的字符串表示  
        return f"MyClass({self.name}, {self.age})"

# 创建类的实例  对象    
my_instance = MyClass("Alice", 30)  #__init__有两个形参,所以需要使用两个参数;self无须手动传递
  
#调用类属性  类名.类属性
print(MyClass.class_attribute) 

# 调用实例方法  对象名.实例属性
my_instance.greet()  # 输出: Hello, my name is Alice and I am 30 years old.  
  
# 访问实例属性  对象名.实例属性
print(my_instance.name)  # 输出: Alice  
print(my_instance.age)   # 输出: 30  
  
# 调用类方法  类名.实例属性
MyClass.class_method()  # 输出: This is a class method of MyClass  
  
# 调用静态方法  类名.实例属性
MyClass.static_method()  # 输出: This is a static method  
  
# 使用特殊方法  
print(my_instance)  # 输出: MyClass(Alice, 30)
写法
print("Hello, my name is self.name and I am self.age years old")
输出:
Hello, my name is self.name and I am self.age years old

要输出self.name和self.age变量的值,您必须使用字符串格式化。例如,使用f-string(如果您的Python版本是3.6或更高):

python
print(f"Hello, my name is {self.name} and I am {self.age} years old")
或者使用.format()方法:

python
print("Hello, my name is {} and I am {} years old".format(self.name, self.age))
或者使用%运算符(虽然这种方法现在已不太推荐使用,因为它不如f-string和.format()方法灵活):

python
print("Hello, my name is %s and I am %d years old" % (self.name, self.age))
在这三种方法中,前两种方法(f-string和.format())更加现代和灵活,并且推荐在Python中使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值