Hướng dẫn how do you initialize a variable in init python? - làm thế nào để bạn khởi tạo một biến trong init python?

Tôi thực sự không khuyến khích khởi tạo các biến mà bạn không cần phải luôn luôn trong __init__ cho một giá trị mặc định tùy ý.

Tôi đặt câu hỏi về việc bạn sử dụng OO nếu đây là trường hợp, nhưng tôi chắc chắn có một trường hợp hợp lệ và dễ hiểu trong đó __init__ sẽ không làm mọi thứ và lớp sẽ muốn tự sửa đổi bằng cách thêm các thuộc tính bổ sung với các phương thức khác.

Cách thích hợp theo ý kiến ​​của tôi để kiểm tra xem một biến được đặt trong khi chạy một phương thức có thể muốn sử dụng nó sẽ là sử dụng hasattr. Đây là trong trường hợp đây là một cách hợp lệ để sử dụng phương pháp và bài kiểm tra chỉ chuyển hành vi theo cách hợp lý.

Một cách khác là thử và sử dụng nó và xử lý ngoại lệ và cung cấp một số thông tin thân thiện với người dùng về những gì người dùng lớp của bạn đang làm sai. Đây là trong trường hợp phương thức cần thuộc tính được đặt trước khi chạy.

tức là hey người đàn ông, bạn đã khởi tạo lớp, nhưng bạn cần đảm bảo thuộc tính z tồn tại bằng cách gọi phương thức z_init trước khi chạy phương thức z_run.

Một cách khác, được cho là cách pythonic hơn, sẽ chỉ là ghi lại cách sử dụng phương pháp trong tài liệu và sau đó để ngoại lệ khi nó được sử dụng không đúng cách. Điều này là đủ tốt cho việc thực hiện một cái gì đó đầu tiên và sau đó bạn có thể tập trung vào nhiệm vụ tiếp theo. Đây là trong cùng một tình huống như trên, phương thức cần thuộc tính được đặt.

Lý do tôi không thích ý tưởng khởi tạo các biến thành mặc định tùy ý là điều này có thể gây nhầm lẫn (vì nó là tùy ý) và là tiếng ồn dòng.

Nếu giá trị không tùy ý và đơn giản là giá trị mặc định có thể thay đổi, bạn nên sử dụng giá trị mặc định trong phương thức __init__ có thể được ghi đè. Nó cũng thực sự có thể là một trạng thái ban đầu hợp lệ, cũng không tùy ý và bạn nên đặt nó theo phương thức __init__.not arbitrary and simply a default value that can be changed you should be using a default value in the __init__ method that can be overridden. It can also actually be a valid initial state, which is also not arbitrary and you should set it in the __init__ method.

Vì vậy, câu trả lời thực sự là nó phụ thuộc, và có lẽ bạn nên tránh nó và đặt câu hỏi về việc sử dụng OO của bạn nếu bạn đang làm điều này bằng cách thêm các thuộc tính vào các phương thức khác hoặc khởi tạo các thuộc tính vào các giá trị tùy ý.

Trong khi Simeon Visser đang nói để giữ đối tượng của bạn ở trạng thái nhất quán, anh ta không có cơ sở cho sự nhất quán dựa trên ví dụ trừu tượng của bạn. Trong khi Pylint cảnh báo về loại điều này, các cảnh báo từ các chương trình lint chỉ đơn giản là một người đánh giá cấp cao có thể được cảnh báo về những điều thường chỉ ra mùi mã. Tôi nói người đánh giá cấp cao bởi vì một người đánh giá thực sự nên đọc và hiểu tất cả các mã của bạn, và do đó không thực sự cần pylint.

Một ví dụ phá vỡ quy tắc của ngón tay cái:

class Mutant(object):
    """A mutant!"""

    def __init__(self):
        """A mutant is born with only 1 eye and 1 mouth"""

        self.eyes = 1
        self.mouth = 1
        self.location = 'Montana'

    def roll_to(self, location):
        """If they have limbs, running is less dangerous"""

        if hasattr(self, 'limbs'):
             print 'Your mutant broke its limbs off!!'
             del self.limbs

        self.location = location

    def run_to(self, location):
        """If they don't have limbs, running is not effective"""

        if not hasattr(self, 'limbs'):
             print 'Your mutant tries to run but he has no limbs.'
        else:
             self.location = location

    def grow_limbs(self, number_of_limbs):
         """Ah, evolution!"""

         assert number_of_limbs > 0, 'Cannot grow 0 or less limbs...'

         if hasattr(self, 'limbs'):
             self.limbs += number_of_limbs
         else:
             self.limbs = number_of_limbs

Khởi tạo lớp, phương thức class Apple: def __init__(self) self.color = 'red' def say(self): print("I'm an apple.") a1 = Apple() # create an Apple instance, a1 print(a1.color) # red a1.say() # I'm an apple 0

Nhiều lớp muốn tạo các đối tượng với các trường hợp được tùy chỉnh theo trạng thái ban đầu cụ thể.

__init__ là một trong nhiều tên phương pháp có ý nghĩa đặc biệt trong các lớp Python. Chú ý đôi nhấn mạnh cả ở đầu và cuối cùng trong tên.

__init__ là viết tắt để "khởi tạo", do đó, nó còn được gọi là phương thức khởi tạo. Tất cả các lớp nên có một phương thức

class Apple:
    def __init__(self)
        self.color = 'red'

    def say(self):
        print("I'm an apple.")

a1 = Apple()          # create an Apple instance, a1
print(a1.color)      # red
a1.say()            # I'm an apple
3. Khi bạn tạo một đối tượng mới của lớp, Python sẽ tự động gọi
class Apple:
    def __init__(self)
        self.color = 'red'

    def say(self):
        print("I'm an apple.")

a1 = Apple()          # create an Apple instance, a1
print(a1.color)      # red
a1.say()            # I'm an apple
3 ngay lập tức để khởi tạo đối tượng mới.initialization method. All classes should have an
class Apple:
    def __init__(self)
        self.color = 'red'

    def say(self):
        print("I'm an apple.")

a1 = Apple()          # create an Apple instance, a1
print(a1.color)      # red
a1.say()            # I'm an apple
3 method. When you create a new object of the class, Python automatically calls
class Apple:
    def __init__(self)
        self.color = 'red'

    def say(self):
        print("I'm an apple.")

a1 = Apple()          # create an Apple instance, a1
print(a1.color)      # red
a1.say()            # I'm an apple
3 right away to initialize the new object.

Trong lớp

class Apple:
    def __init__(self)
        self.color = 'red'

    def say(self):
        print("I'm an apple.")

a1 = Apple()          # create an Apple instance, a1
print(a1.color)      # red
a1.say()            # I'm an apple
5 trước đó, có vẻ như chúng tôi đặt giá trị của đối tượng bằng cách gán các giá trị cho các biến lớp (____ 16) khi xác định lớp. Bất cứ khi nào một đối tượng
class Apple:
    def __init__(self)
        self.color = 'red'

    def say(self):
        print("I'm an apple.")

a1 = Apple()          # create an Apple instance, a1
print(a1.color)      # red
a1.say()            # I'm an apple
5 mới được tạo, nó luôn được đặt là
class Apple:
    def __init__(self)
        self.color = 'red'

    def say(self):
        print("I'm an apple.")

a1 = Apple()          # create an Apple instance, a1
print(a1.color)      # red
a1.say()            # I'm an apple
8

Nhưng trên thực tế, cách tiêu chuẩn để khởi tạo các giá trị của đối tượng khi tạo đối tượng là sử dụng phương thức

class Apple:
    def __init__(self)
        self.color = 'red'

    def say(self):
        print("I'm an apple.")

a1 = Apple()          # create an Apple instance, a1
print(a1.color)      # red
a1.say()            # I'm an apple
9 trong lớp.

Hãy viết lại lớp

class Apple:
    def __init__(self)
        self.color = 'red'

    def say(self):
        print("I'm an apple.")

a1 = Apple()          # create an Apple instance, a1
print(a1.color)      # red
a1.say()            # I'm an apple
5 theo cách tiêu chuẩn hơn:

class Apple:
    def __init__(self)
        self.color = 'red'

    def say(self):
        print("I'm an apple.")

a1 = Apple()          # create an Apple instance, a1
print(a1.color)      # red
a1.say()            # I'm an apple

Giống như tất cả các phương thức trong một lớp,

class Apple:
    def __init__(self)
        self.color = 'red'

    def say(self):
        print("I'm an apple.")

a1 = Apple()          # create an Apple instance, a1
print(a1.color)      # red
a1.say()            # I'm an apple
3 luôn có ít nhất một đối số (cũng là đối số đầu tiên), __init__2, trong đó đề cập đến chính đối tượng được tạo.

Ở đây trong

class Apple:
    def __init__(self)
        self.color = 'red'

    def say(self):
        print("I'm an apple.")

a1 = Apple()          # create an Apple instance, a1
print(a1.color)      # red
a1.say()            # I'm an apple
3, chúng tôi xác định một biến sử dụng __init__4 để chỉ ra rằng __init__5 là biến thể hiện, nó thuộc về một đối tượng.

Nếu một lớp xác định phương thức

class Apple:
    def __init__(self)
        self.color = 'red'

    def say(self):
        print("I'm an apple.")

a1 = Apple()          # create an Apple instance, a1
print(a1.color)      # red
a1.say()            # I'm an apple
3, khi bạn tạo một thể hiện lớp (một đối tượng), Python sẽ tự động gọi __init__Function chỉ một lần để khởi tạo các biến của đối tượng.

Vì vậy, trong ví dụ này, __init__8 là một thể hiện Apple mới, khởi tạo, nó có biến __init__5 và có giá trị ban đầu __init__0.

__init__8 cũng có một phương thức __init__2 có thể in ra thông báo __init__3

Kết quả khớp với """

    Không có kết quả phù hợp với """

    __ init __ () trong Python là gì?

    Phương pháp __init__ là tương đương Python của hàm tạo C ++ theo cách tiếp cận hướng đối tượng. Hàm __init__ được gọi mỗi khi một đối tượng được tạo từ một lớp. Phương thức __init__ cho phép lớp khởi tạo các thuộc tính của đối tượng và không phục vụ mục đích nào khác. Nó chỉ được sử dụng trong các lớp học.the Python equivalent of the C++ constructor in an object-oriented approach. The __init__ function is called every time an object is created from a class. The __init__ method lets the class initialize the object's attributes and serves no other purpose. It is only used within classes.

    Tất cả các biến thành viên có nên được khởi tạo trong __ init __?

    Có, biến thể hiện có thể được tham chiếu bằng phương thức lớp bằng cách sử dụng bản thân miễn là nó đã được đặt trước cuộc gọi.Nếu không, một thuộc tính sẽ được tạo ra.Theo nguyên tắc chung, tốt nhất là khởi tạo tất cả các biến thể hiện trong hàm __init __ () cho tính nhất quán.it is best to initialize all of the instance variables in the __init__() function for consistency.

    Có cái gì bên trong __?Đưa ra ví dụ?

    "__init__" là một phương pháp được phát triển trong các lớp Python.Nó được gọi là một hàm tạo trong thuật ngữ định hướng đối tượng.Phương thức này được gọi là khi một đối tượng được tạo từ một lớp và nó cho phép lớp khởi tạo các thuộc tính của lớp.a reseved method in python classes. It is called as a constructor in object oriented terminology. This method is called when an object is created from a class and it allows the class to initialize the attributes of the class.

    Việc khởi tạo các biến là gì?

    Khởi tạo một biến có nghĩa là chỉ định một giá trị ban đầu để gán cho nó (nghĩa là, trước khi nó được sử dụng ở tất cả).Lưu ý rằng một biến không được khởi tạo không có giá trị xác định, do đó nó không thể được sử dụng cho đến khi nó được gán một giá trị như vậy.specifying an initial value to assign to it (i.e., before it is used at all). Notice that a variable that is not initialized does not have a defined value, hence it cannot be used until it is assigned such a value.